为什么编译器在这里抱怨?它不允许我在main中创建一个Wrapper
对象。 MyList是一个单独的类。我该如何创建它?
public class BinaryTree {
Node root;
class Wrapper {
MyList.Node node;
}
class Node {
Integer value;
Node left;
Node right;
Node(int value) {
this.value = value;
}
}
public static void main() {
MyList list = new MyList();
Wrapper w = new Wrapper();
w.node = list.getHead();
}
}
答案 0 :(得分:13)
Wrapper是一个内部(非静态嵌套)类。为了创建一个对象,它应该是静态的或通过外部类访问,例如new BinaryTree().new Wrapper()
答案 1 :(得分:4)
Wrapper
需要声明为static:
static class Wrapper
您是否考虑过将所有这些类移到单独的文件中?
(假设您的main
方法位于BinaryTree
。如果没有,您还需要应用Preet Sangha建议的方法。)
答案 2 :(得分:1)
Wrapper
是BinaryTree
的非静态内部类。有两种方法可以创建Wrapper的对象:
将Wrapper
设为静态,并将Wrapper
的对象直接创建为Wrapper wrapper = new Wrapper();
实例化外部类的对象,即BinaryTree
,并使用BinaryTree
的对象,创建Wrapper
对象,如下所示:
BinaryTree binary = new BinaryTree();
Wrapper wrapper = binary.new Wrapper();