为什么编译器在这里抱怨?它不允许我在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();
}
}
Wrapper是一个内部(非静态嵌套)类。为了创建一个对象,它应该是静态的或通过外部类访问,例如new BinaryTree().new Wrapper()
Wrapper
需要声明为static:
static class Wrapper
你有没有想过把所有这些类移到单独的文件中?
(这是假设您的main
方法在BinaryTree
中。如果没有,你也需要应用Preet Sangha的建议)
Wrapper
是BinaryTree
的非静态内部类。有两种方法可以创建Wrapper对象:
-
将
Wrapper
设为静态,将Wrapper
的对象直接创建为Wrapper wrapper = new Wrapper();
-
实例化外部类的对象,即
BinaryTree
,并使用BinaryTree
的对象,创建Wrapper
的对象,如下所示:
:
BinaryTree binary = new BinaryTree();
Wrapper wrapper = binary.new Wrapper();