请考虑以下两个类:
一个学生
package datatypes;
public class Student {
private String name ;
public Student(String name) {
this.name = name;
}
class Address{
String city;
String state;
Address(String city , String state){
this.city = city;
this.state = state;
}
String getAddress(){
return city + state;
}
}
String getName(){
return name;
}
}
b.) 学生演示
package datatypes;
import datatypes.Student.Address;
public class StudentDemo {
public static void main(String[] args) {
Student obj = new Student("Yati");
Address adr = obj.new Address("YNR" , "HARYANA");
System.out.println(obj.getName());
System.out.println(adr.getAddress());
obj=null;
//System.out.println(obj.getName());
System.out.println(adr.getAddress()); //Line 16
}
}
为了创建内部类的实例,首先我们必须创建封闭类的实例,然后我们可以创建内部类的实例。
像其他成员(实例变量和实例方法)一样,内部类也是外部类实例的成员。在StudentDemo.java 的第 16 行中,即使负责创建Address对象的对象在内存中不存在,我仍然能够打印地址的值。
我的问题是:为什么 Address 对象会保留在内存中,并且一旦obj设置为 null就不会自动销毁?
输出:
Yati
YNRHARYANA
YNRHARYANA