Ho una classe ( Timer
) con un elenco di matrici di oggetti Timable
. Timeable
è un'interfaccia. C'è una funzionalità specifica di cui ho bisogno per la classe Trigger
(implementa Timable
), che ha un riferimento chiamato target
. Molti metodi devono cercare nell'array Timer
per Trigger
oggetti con un determinato target
.
Quello che ho fatto è stata una funzione come questa:
public Timable[] findObjectsWithTarget(Cue target) {
ArrayList<Timable> result = new ArrayList<Timable>();
for (Timable timed : fireable) { //fireable is the array (actually a HashSet) of Timed objects
if (timed instanceof Trigger && ((Trigger) timed).getTarget() == target)
result.add(timed);
}
return (Timable[]) result.toArray();
}
Sembra una cattiva pratica. La classe Timer ora dipende dalla classe Trigger (sorta di) e non è più generalizzata.
Quindi, le mie due domande:
1) In realtà è una cattiva pratica? Perché o perché no?
2) Qual è un modo migliore se si tratta di una cattiva pratica?