【发布时间】:2018-04-13 13:32:49
【问题描述】:
想象一下下面提到的场景 -
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 对象设置为会话并在需要时访问它。但是我怎样才能访问 data1 (内部类实例变量)呢? 据我所知,newInnerClass 对象(InnerFirst 的对象)是在 newClass 实例(外部类)中创建的。我的问题是,如何从外部类对象引用访问内部类实例成员?
【问题讨论】:
-
内部类实例有一个对其外部类实例的隐式引用(这允许它访问外部类成员),但反之则不然。外部类实例不保留对创建的所有内部类实例的任何引用。除非您明确拥有一个并对其进行初始化。
标签: java inner-classes