1

为什么编译器会在这里抱怨?它不允许我在 main.js 中创建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();
    }
}
4

3 回答 3

13

Wrapper 是一个内部(非静态嵌套)类。为了创建一个对象,它应该是静态的或通过外部类访问,例如new BinaryTree().new Wrapper()

于 2013-05-08T04:30:42.140 回答
4

Wrapper需要声明为静态的:

static class Wrapper

您是否考虑过将所有这些类移动到单独的文件中?

(这是假设您的main方法在BinaryTree. 如果不是,您还需要应用 Preet Sangha 的建议。)

于 2013-05-08T04:30:01.263 回答
1

Wrapper是 的非静态内部类BinaryTree。创建 Wrapper 的对象有两种方式:

  1. 制作Wrapper静态并Wrapper直接创建对象Wrapper wrapper = new Wrapper();

  2. 实例化外部类的对象,即BinaryTree使用 的对象BinaryTree,创建Wrapper如下的对象:

 BinaryTree binary = new BinaryTree();
 Wrapper wrapper = binary.new Wrapper();
于 2013-05-08T05:51:39.373 回答