¿Cómo encontrar el tipo sin usar instanceof?

Tengo unList del tipo de interfazCriteria dentro de mi claseQuery.

List<Criteria> criteria = new ArrayList<Criteria>();

Tengo varias implementaciones concretas deCriteria. Quiero darQuery un método que itera a través de micriteria list, y dependiendo del tipo concreto, ejecute algo de lógica.

Actualmente estoy haciendo esto coninstanceof al igual que

for(Criteria c : criteria) {
    if(c instanceof ContextualCriteria){
        // logic
    }
    ...
}

¿Es esta la única / mejor manera?

Respuestas a la pregunta(7)

Su respuesta a la pregunta