/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
class MyObject {
private MyObject other;
public MyObject
(String name
) { this.name = name;
System.
out.
println("create " + name
); }
// Il vaut mieux éviter d'utiliser finalize() sans raison
// car cela complique la tâche du GC
protected void finalize() {
System.
out.
println("finalize " + name
); }
public void setOther(MyObject other) {
this.other = other;
}
}
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static void test () {
MyObject p1 = new MyObject("object1");
MyObject p2 = new MyObject("object2");
MyObject p3 = new MyObject("object3");
// on fait un lien monodirectionnel de p4 vers p5
MyObject p4 = new MyObject("object4");
MyObject p5 = new MyObject("object5");
p4.setOther(p5);
// on fait un lien bidirectionnel entre p6 et p7
MyObject p6 = new MyObject("object6");
MyObject p7 = new MyObject("object7");
p6.setOther(p7);
p7.setOther(p6);
}
test();
// crade : on force le GC
// ne pas faire cela !!!
for (int i=0; i<5; i++) {
}
}
}