我可以在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