- import java.lang.*;
- import java.lang.reflect.*;
- import java.util.*;
- class ReflectTest2
- {
- public static void main(String[] args)
- {
- Collection c=new HashSet(); //新建一个集合
-
- //创建反射点对象,并传入参数
- ReflectPoint1 rp1=new ReflectPoint1(1,2);
- ReflectPoint1 rp2=new ReflectPoint1(3,4);
- ReflectPoint1 rp3=new ReflectPoint1(1,2);
- //将反射点中得到的元素添加到集合中
- c.add(rp1);
- c.add(rp2);
- c.add(rp3);
-
- [color=Red]rp1.y=7; //修改y的值之后,删除时就找不到原来的rp1,所以无法删除,此时就会出现内存泄露
- c.remove(rp1); //删除元素[/color]
- System.out.println(c.size());
-
- }
- }
复制代码
对于上面,省略掉了反射点代码,打印长度还是2
先修改y的值,然后再删除集合元素,为什么就删不了rp1了呢,不是应该是修改了y的值之后,然后删除新的rp1吗?为什么删除的时候还是找的原来的rp1 |
|