使用内部类时编译错误

时间:2013-10-27 13:42:17

标签: java

目前正在学习内部课程。我有两节课。在第二课中有一个内部阶级。我试图在第二个类中创建内部类的对象。但我收到编译错误。有人可以帮忙吗?

这是我的代码:

public class MainClass {

    public static void main(String[] args) {

        NestedClass.NewUser newUserObj = new NewUser("User");
        System.out.println(newUserObj.Name);
    }
}

class NestedClass {

    class NewUser {
        public String Name;

        NewUser(String name) {
            this.Name = name;
        }
    }
}

4 个答案:

答案 0 :(得分:6)

要实例化内部类,必须首先实例化外部类。

使用外部对象创建内部对象,如下所示:

NestedClass.NewUser newUserObj = (new NestedClass()).new NewUser("User");

参考:http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

答案 1 :(得分:2)

您只能使用NewUser的实例创建NestedClass的实例。

new NestedClass().new NewUser("User");

答案 2 :(得分:2)

尽管名称NestedClass不是嵌套类而是外部类,因此需要NestedClass的实例来创建真实嵌套类的实例,即NewUser < / p>

NestedClass.NewUser newUserObj = new NestedClass().new NewUser("User");

答案 3 :(得分:2)

备用选项:创建内部类static。然后,从技术上讲,它不再是“内部”类,而只是“嵌套”类,您可以使用new NestedClass.NewUser()对其进行实例化。正如Nested Classes Tutorial中所解释的那样,静态嵌套类可以在没有封闭类实例的情况下实例化,就像其他答案所指的那样。