关于内部类的问题

yyouyou 2006-11-27 03:09:47
比如说有个非静态的内部类,它的实例被引用,但是它的外部类实例没有被引用,垃圾回收会不会回收外部类的对象。
...全文
161 4 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
yyouyou 2006-12-01
不想继承的时候,呵呵
  • 打赏
  • 举报
回复
lkl_1981 2006-12-01
请问内部类都什么时候用的阿?
谢谢
  • 打赏
  • 举报
回复
s3x4 2006-11-27
恩,这个问题没有想过,关注一下。
  • 打赏
  • 举报
回复
yyouyou 2006-11-27
package myjava;

/**
* Created by IntelliJ IDEA.
* User: Administrator
* Date: 2006-11-27
* Time: 14:49:07
* To change this template use File | Settings | File Templates.
*/
public class TestFinalize {
String id ;
TestFinalize(String id){
this.id =id;
ti = new TestInner(id);
System.out.println("TestFinalize constructs:"+id);
}
public void finalize(){
System.out.println("TestFinalize finalize:" + id);
}
public class TestInner{
String a="" ;
TestInner(String id){
a = id;
}
public void finalize(){
System.out.println("TestInner finalize:" + a);
}
}
public TestInner ti;
public static void main(String[] args){
TestFinalize tf1 = new TestFinalize("one");
TestFinalize tf2 = new TestFinalize("two");
TestInner ti = tf1.ti;
tf1 =null;
System.out.println("System.gc(); fisrt");
System.gc();
System.out.println(tf1);
System.out.println(tf2);
tf2 = null;
System.out.println("System.gc(); second");
System.gc();
}
}

结果:
TestFinalize constructs:one
TestFinalize constructs:two
System.gc(); fisrt
null
myjava.TestFinalize@19821f
System.gc(); second
TestInner finalize:two
TestFinalize finalize:two

好像没有被回收
  • 打赏
  • 举报
回复
相关推荐
发帖
Java SE

6.2w+

社区成员

Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
帖子事件
创建了帖子
2006-11-27 03:09
社区公告
暂无公告