目前正在学习内部课程。我有两节课。在第二课中有一个内部阶级。我试图在第二个类中创建内部类的对象。但我收到编译错误。有人可以帮忙吗?
这是我的代码:
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;
}
}
}
答案 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中所解释的那样,静态嵌套类可以在没有封闭类实例的情况下实例化,就像其他答案所指的那样。