创建类Student : 学号 +Person
创建类Person : 姓名 年龄+宠物Pet
创建类Pet :宠物名字 宠物年龄
public class Student {
private int number;
private Person person;
//构造方法省略
public void setPerson( Person per ){
person = per;
}
public Person getPerson(){
return person;
}
//其他get set方法省略
}
public class Person {
private int age;
private String name;
private pet Pet;
//构造方法省略
//get set方法省略
}
public class pet {
private String name;
private int age;
//构造 set get方法省略
}
做一个测试Test
public class Test {
public static void main(String[] args) {
Student st1 = new Student();
//只需要对最外层的类实例化,其他内部类都用匿名即可
st1.setPerson( new Person( 18,"刘窝瓜", new pet("年年",1) ) );
//只要最外层的st1不被回收,内层new出来的两个匿名对象都不会回收
String A = st1.getPerson().getPet().getName();
int B = st1.getPerson().getPet().getAge();
System.out.println(A+B+"岁啦");
}
}
结果:年年1岁啦
总结:
看上去是new了一个新的匿名对象,但是只要这个匿名对象有盛放的地方,那么他就不会被回收