从其他java中在innerClass中创建的访问对象

时间:2016-03-11 12:41:56

标签: java object inner-classes outer-classes

所以我有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

4 个答案:

答案 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