Ero nella mia classe CS quando il mio istruttore mi ha presentato le seguenti classi:
public class UninstantiableTest {
private static Uninstantiable uninstantiable;
public static void setUninstantiable(Uninstantiable used) {
uninstantiable = used;
}
public static void main(String[] args) {
Uninstantiable.setupUninsntatiableTest();
Uninstantiable test = uninstantiable;
for (int i = 0; i <= 100; i++) {
test = test.new InstantiableWithOther(Integer.toString(i));
System.out.println(test);
}
}
}
public class Uninstantiable {
public static void setupUninsntatiableTest() {
UninstantiableTest.setUninstantiable(new Uninstantiable());
}
private Uninstantiable() {}
public class InstantiableWithOther extends Uninstantiable {
private String string;
public InstantiableWithOther(String string) {
this.string = string;
}
public String toString() {
return string;
}
}
}
Mi è stato quindi chiesto un probabile caso d'uso per un setup di classe come questo, al quale ho risposto "Per le applicazioni a cui desideri concedere i privilegi in modo selettivo passando oggetti", ma non sembrava soddisfatto di questa risposta.
Quali sono i casi d'uso (se esistono casi d'uso legittimi) per consentire l'istanziazione solo attraverso un'istanza esistente dello stesso tipo?