Senza un controllore ad-hoc la vedo dura. Il controllore potrebbe essere
una classe 'factory' che si 'ricordi' le istanze create e restituisca
l'istanza verificata. Oppure potresti realizzare una variabile di classe
(quindi statica) nella stessa classe Persona che faccia il controllo di
cui sopra, ad esempio:
class Persona{
public static final PERSONE = new TreeSet<String>();
String CF ;
public Persona(String cf) {
controlla(cf)
CF = cf;
}
private synchronized void controlla(String cf) {
if (PERSONE.contains(cf))
throw new IllegalArgumentException("Esiste già "+cf);
PERSONE.add(cf);
}
}
Ovviamente il tuo metodo main dovra' gestirsi l'eventuale eccezione.