我可以在java中做这样的事情吗?
class Class1 {
static class Class2 {
}
}
Class1 obj1 = new Class1();
Class1.Class2 obj2 = new obj1.getClass().Class2();
答案 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