Operador Java isInstance vs instanceOf

Todo el asunto de los genéricos me está arrojando un poco, y más aún el RTT.

Específicois? Ah, bueno, aquí está la esencia:

enum QueryHelper {
  query1,
  query2;
  static <T> QueryHelper getQueryHelper (Class<T> expectedReturn) {
    if (expectedReturn.isInstance (SomeRelatedClass.class))
      return query1;
    else
      return query2;
  }
}

y luego lo llamaría así:

...
QueryHelper helper = QueryHelper.getQueryHelper(SomeRelatedClass.class);
...

Esto es para que realmente pueda asignar de manera flexible el tipo de retorno de consulta en el asistente real. Realiza algunos casting y creación de objetos. Lo que estoy viendo es que no hay coincidencia, ¿debería hacerlo de alguna otra manera? ¿O es toda la idea simplemente mala?

Y el verdadero corazón de esto es que no entiendo la diferencia entre class.isInstance y el operador instanceOf? ¿Debería estar usando este último?

Respuestas a la pregunta(3)

Su respuesta a la pregunta