1

コンパイラがここで文句を言うのはなぜですか? 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 のオブジェクトを作成するには、次の 2 つの方法があります。

  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 に答える