从其他地方访问在 innerClass 中创建的对象 java
Access object created in innerClass from elsewhere java
所以我有 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
这可行:
public class outerClass{
public static class innerClass{
//properties
}
}
public Class outerClass{
Class innerClass{
//properties
}
public innerClass innerObj;
}
outerObj.innerObj = outerClass.new innerClass();
outerClass.innerClass innerObj = outerObj.new innerClass();
innerObj
是局部变量。可以直接引用为
innerObj
对于非静态内部 class,编译器会自动添加对 "owner" 对象实例的隐藏引用。当您尝试从静态方法(例如,main 方法)创建它时,没有拥有实例。这就像尝试从静态方法调用实例方法一样——编译器不允许这样做,因为您实际上没有要调用的实例。
因此内部 class 本身必须是静态的(在这种情况下不需要拥有实例),或者您只能从非静态上下文中创建内部 class 实例。
所以让你的 innerClass static
public static class innerClass{
//properties
}
您可以拨打
outerClass.innerClass innerObj = new outerClass.innerClass();
如果您只想通过点 (.) 符号访问字段,应考虑使用
outerClass 中的静态内部字段就像系统中的 PrintStream class
示例:
public class outerClass{
public static innerClass innerObject = new innerClass();
static class innerClass{
//properties
}
}
然后在main方法中
outerClass outerClass= new outerClass();
outerClass.innerObject.yourfied
所以我有 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
这可行:
public class outerClass{
public static class innerClass{
//properties
}
}
public Class outerClass{
Class innerClass{
//properties
}
public innerClass innerObj;
}
outerObj.innerObj = outerClass.new innerClass();
outerClass.innerClass innerObj = outerObj.new innerClass();
innerObj
是局部变量。可以直接引用为
innerObj
对于非静态内部 class,编译器会自动添加对 "owner" 对象实例的隐藏引用。当您尝试从静态方法(例如,main 方法)创建它时,没有拥有实例。这就像尝试从静态方法调用实例方法一样——编译器不允许这样做,因为您实际上没有要调用的实例。
因此内部 class 本身必须是静态的(在这种情况下不需要拥有实例),或者您只能从非静态上下文中创建内部 class 实例。
所以让你的 innerClass static
public static class innerClass{
//properties
}
您可以拨打
outerClass.innerClass innerObj = new outerClass.innerClass();
如果您只想通过点 (.) 符号访问字段,应考虑使用
outerClass 中的静态内部字段就像系统中的 PrintStream class
示例:
public class outerClass{
public static innerClass innerObject = new innerClass();
static class innerClass{
//properties
}
}
然后在main方法中
outerClass outerClass= new outerClass();
outerClass.innerObject.yourfied