我可以创建对象内部类的对象吗?



我可以在java中做这样的事情吗?

class Class1 {
    static class Class2 {
    }
}
Class1 obj1 = new Class1();
Class1.Class2 obj2 = new obj1.getClass().Class2();
你不能

这样做 - 如果你需要使用getClass(),你必须做整个反射路线。

如果该类在编译时已知,则可以执行以下操作:

Class1.Class2 obj2 = new Class1.Class2();

如果该类在编译时未知,请执行以下操作:

Class inner = null;
for (Class c : obj1.getClass().getDeclaredClasses()) {
    if ("myPackage.Class1.Class2".equals(c.getName())) {
        inner = c;
        break;
    }
}
Object obj2 = inner.newInstance();

在java中,你可以创建内部类的对象。您可以执行以下操作:

Class1.Class2 obj2 = new Class1.Class2();

如果您需要更多信息,请点击以下链接:http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

Class2 不是一个内部类,它是一个嵌套的静态类,对于那些你不需要外部类实例的人来说,只需这样做

import xxx.Class1.Class2;
...
Class2 obj2 = new Class2();

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

最新更新