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?