java - 在外部类中创建内部类对象成员后如何访问内部类对象成员

标签 java inner-classes

想象一下下面提到的场景 -

public class TestMain {

    private int outerData = 30;

    class InnerFirst{
        private int data1 = 40;

        public int getData() {
            return data1;
        }

        public void setData(int data) {
            this.data1 = data;
        }

        void msg(){
            System.out.println("Inner data is : "+data1+" and outer data is : "+outerData);
        }
    }

    class InnerSecond{
        private int data2 = 40;

        public int getData() {
            return data2;
        }

        public void setData(int data) {
            this.data2 = data;
        }

        void msg(){
            System.out.println("Inner data is : "+data2+" and outer data is : "+outerData);
        }
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        TestMain newClass = new TestMain();
        TestMain.InnerFirst newInnerClass = newClass.new InnerFirst();

        newInnerClass.setData(50);

        newInnerClass.msg();





    }

}

我的目的是将 newClass 对象设置到 session 中并在需要时访问它。但是我怎样才能访问data1(内部类实例变量)呢? 据我了解 newInnerClass 对象(InnerFirst 的对象)是在 newClass 实例(外部类)内创建的。我的问题是,如何从外部类对象引用访问内部类实例成员?

最佳答案

您始终可以在父类中保留这些子类的实例变量,当您创建子类的对象时,然后在子类的构造函数中您可以初始化同一类的实例变量。像这样:对于第二个类,您可以做同样的事情:您可以使用此实例变量从子类获取每个字段。

public class TestMain {

private  InnerFirst first;
private InnerSecond second;

private int outerData = 30;

class InnerFirst{
    private InnerFirst() {
        first = this;
    }



    private int data1 = 40;

    public int getData() {
        return data1;
    }

    public void setData(int data) {
        this.data1 = data;
    }

    void msg(){
        System.out.println("Inner data is : "+data1+" and outer data is : "+outerData);
    }
}

class InnerSecond{
    private InnerSecond() {
        second = this;
    }

    private int data2 = 40;

    public int getData() {
        return data2;
    }

    public void setData(int data) {
        this.data2 = data;
    }

    void msg(){
        System.out.println("Inner data is : "+data2+" and outer data is : "+outerData);
    }
}



private InnerFirst getFirst() {
    return first;
}


public static void main(String[] args) {
    // TODO Auto-generated method stub
    TestMain newClass = new TestMain();
    TestMain.InnerFirst newInnerClass = newClass.new InnerFirst();
    System.out.println(newClass.getFirst().getData());        

    newInnerClass.setData(50);

       newInnerClass.msg();

}

}

关于java - 在外部类中创建内部类对象成员后如何访问内部类对象成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47051365/

相关文章:

java - 是否有任何设计模式只允许特定类新建其他特定类

java - JDK、JRE 中的内部类、嵌套类、本地类和匿名类示例

java - 为什么要将私有(private)构造函数与静态嵌套类结合使用?

java - 仅在新代码上测量代码覆盖率

java - 使用递归对二维数组中的整数求和?

java - JDBC ResultSet.getWarnings

c++ - Visual Studio 2012 中的智能感知 : No members available for Inner classes in class template?

java - 坚持 GAE 后将子实体添加到父实体

java - 如何将 Java 游戏移植到 Android 应用程序

java - 从静态内部类中引用非静态变量