Java 为什么可以';我在main中实例化一个内部类吗?

Java 为什么可以';我在main中实例化一个内部类吗?,java,Java,为什么编译器在这里抱怨?它不允许我在main中创建包装器对象。MyList是一个单独的类。我如何创建它 public class BinaryTree { Node root; class Wrapper { MyList.Node node; } class Node { Integer value; Node left; Node right; Node(int value)

为什么编译器在这里抱怨?它不允许我在main中创建
包装器
对象。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();
    }
}

包装器
需要声明为静态:

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


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

包装器
需要声明为静态:

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


(这是假设您的
main
方法位于
BinaryTree
中。否则,您还需要应用Preet Sangha建议的方法。)

包装器是一个内部(非静态嵌套)类。为了创建一个对象,它应该是静态的或通过外部类进行访问,例如
newbinarytree()。new Wrapper()
Wrapper是一个内部(非静态嵌套)类。为了创建一个对象,它应该是静态的或者通过外部类访问,例如
newbinarytree()。new Wrapper()
Wrapper
BinaryTree
的非静态内部类。有两种方法可以创建包装器的对象:

  • Wrapper
    设为静态,并直接将
    Wrapper
    的对象创建为
    Wrapper=new Wrapper()

  • 实例化外部类的对象,即
    BinaryTree
    ,并使用
    BinaryTree
    的对象,创建
    Wrapper
    的对象,如下所示:

  • :


    Wrapper
    BinaryTree
    的非静态内部类。有两种方法可以创建包装器的对象:

  • Wrapper
    设为静态,并直接将
    Wrapper
    的对象创建为
    Wrapper=new Wrapper()

  • 实例化外部类的对象,即
    BinaryTree
    ,并使用
    BinaryTree
    的对象,创建
    Wrapper
    的对象,如下所示:

  • :


    发布编译器投诉。-1未发布编译器错误。仅供参考,此问题与
    main
    无关,与
    static
    有关。发布编译器投诉。-1未发布编译器错误。仅供参考,此问题与
    main
    无关,与
    static
    有关。