Ho tre classi (il numero sarà probabilmente crescerà in futuro):lista Esclusione e la pratica Java
public inteface Base{ }
public class Select implements Base{ }
public class Ast implements Base{ }
public class Gt implements Base{ }
Ho anche bisogno di una classe List
BaseList extends ArrayList<Base>{
public boolean add(Base b){
throw new UnsupportedOperationException("You should use add%ConcereteBaseType% method instead");
}
public boolean add(Select s){ }
public boolean add(Ast a){ }
public boolean add(Gt g){ }
}
Il motivo per cui l'ho fatto questo è il fatto che non voglio che qualcuno aggiunga elementi tramite un puntatore a Base
. Nella mia situazione concreta questo sarebbe pericoloso.
Ma lo svantaggio è che verrà rilevato solo in fase di esecuzione.
Ho anche bisogno di scorrere l'elenco.
È una buona pratica fare queste cose?
È più probabile che tutto questo sia un uso improprio dell'ereditarietà. Scommetto che qualunque cosa tu abbia in mente potrebbe essere realizzata con la composizione. – duffymo
@duffymo Forse potresti dare un esempio per capire le cose di cui parli? –
"Composizione" significa avere un 'ArrayList' come un campo piuttosto che estendere un' ArrayList'. (Vedere la risposta di my o memberssound ad esempio codice.) – aioobe