所以我有outerClass和innerClass,我想使用outerClass访问从innerClass创建的对象,例如:
public Class outerClass{
Class innerClass{
//properties
}
}
所以我想做的是这样的事情:
public class Main {
public static void main(String [] args) {
outerClass outerObj = new outerClass();
outerClass.innerClass innerObj = outerObj.new innerClass();
//this is what i want:
outerObj.innerObj;
}
}
它可能很复杂,但我想做的是只使用outerObject
获取innerObject答案 0 :(得分:3)
这样可行:
public class outerClass{
public static class innerClass{
//properties
}
}
答案 1 :(得分:1)
public Class outerClass{
Class innerClass{
//properties
}
public innerClass innerObj;
}
outerObj.innerObj = outerClass.new innerClass();
答案 2 :(得分:1)
outerClass.innerClass innerObj = outerObj.new innerClass();
innerObj
是一个局部变量。您可以直接将其引用为
innerObj
答案 3 :(得分:1)
对于非静态内部类,编译器会自动将一个隐藏引用添加到"所有者"对象实例。当您尝试从静态方法(例如,main方法)创建它时,没有拥有实例。这就像尝试从静态方法调用实例方法 - 编译器不会允许它,因为你实际上没有实例可以调用。
因此内部类本身必须是静态的(在这种情况下不需要拥有实例),或者只在非静态上下文中创建内部类实例。
所以制作你的innerClass static
public static class innerClass{
//properties
}
你可以打电话
outerClass.innerClass innerObj = new outerClass.innerClass();
如果您只想通过点(。)表示访问字段,则应考虑使用
outerClass中的静态内部字段,如System类
中的PrintStream示例:
public class outerClass{
public static innerClass innerObject = new innerClass();
static class innerClass{
//properties
}
}
然后在main方法
outerClass outerClass= new outerClass();
outerClass.innerObject.yourfied