java - 我可以创建一个对象的内部类的对象吗?

时间:2014-01-19 03:57:15

标签: java

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

class Class1 {

    static class Class2 {

    }
}

Class1 obj1 = new Class1();

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

3 个答案:

答案 0 :(得分:2)

你不能这样做 - 如果你需要使用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();

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

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

import xxx.Class1.Class2;

...

Class2 obj2 = new Class2();

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