Weak Referencies

class TestA {
	private Object link;
 
	public Object getLink(){ return link; }
 
	public void setLinkAndPrint(Object newlink){
		link = newlink;
		print();
	}
 
	public void print(){
		Runtime r = Runtime.getRuntime();
		r.gc();
		System.out.println(getClass().getName() + ":  link =" + getLink());
	}
}
 
class TestB {
	private WeakReference<Object> link;
 
	public Object getLink(){ return link.get();	}
 
	public void setLinkAndPrint(Object newlink){
		link =  new WeakReference<>( newlink );
		print();
	}
 
	public void print(){
		Runtime r = Runtime.getRuntime();
		r.gc();
		System.out.println(getClass().getName() + ":  link =" + getLink());
	}
}
 
public class TestWeakRef {
	public static void main(String[] args) {
		TestA a = new TestA();
		a.setLinkAndPrint(Arrays.asList(4,5,6));
		a.print();
 
		TestB b = new TestB();
		b.setLinkAndPrint(Arrays.asList(1,2,3));
		b.print();
	}
}

Result:

promauto.batchext.TestA:  link =[4, 5, 6]
promauto.batchext.TestA:  link =[4, 5, 6]
promauto.batchext.TestB:  link =[1, 2, 3]
promauto.batchext.TestB:  link =null

dev/java/lang/weakrefs.txt · Последние изменения: 2012/08/04 20:34 — jamis7005
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0