从其他地方访问在 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