Supponiamo che sto modellando diversi animali in Java. Ogni animale ha una combinazione di queste abilità: camminare, nuotare e volare. Per l'esempio, l'abilità impostata è costante.In Java, dovrei usare getter o tag di interfaccia per proprietà costanti?
Posso memorizzare queste informazioni come getter che restituiscono costanti. Per esempio:
public class Penguin implements Animal {
public boolean canWalk() {
return true;
}
public boolean canSwim() {
return true;
}
public boolean canFly() {
return false;
}
// implementation...
}
Il controllo in fase di esecuzione è quindi:
if (animal.canFly()) {
// Fly!
}
o posso usare "codifica" interfacce:
public class Penguin implements Animal, Flyer, Swimmer {
// implementation...
}
Il controllo in fase di esecuzione è quindi:
if (animal instanceof Flyer) {
// Fly!
}
Quali sono i vantaggi e gli svantaggi di ogni approccio?
È necessario un parametro per un'interfaccia di annotazione affinché sia disponibile in fase di esecuzione. – Dariusz
@Dariusz Buona cattura! Modificato. – sh0rug0ru
È un malinteso comune che le annotazioni siano una sostituzione delle interfacce marker. _Effective Java Item # 37: utilizza le interfacce marker per definire types_, in particolare indica i vantaggi delle interfacce marker rispetto alle annotazioni. – jaco0646