Java Generics: Comparando la clase de Object o con <E>

Digamos que tengo la siguiente clase:

public class Test<E> {
    public boolean sameClassAs(Object o) {
        // TODO help!
    }
}

¿Cómo comprobaría queo es la misma clase queE?

Test<String> test = new Test<String>();
test.sameClassAs("a string"); // returns true;
test.sameClassAs(4); // returns false;

No puedo cambiar la firma del método de(Object o) ya que estoy anulando una superclase y no elijo la firma de mi método.

Prefiero no seguir el camino de intentar un lanzamiento y luego atrapar la excepción resultante si falla.

Respuestas a la pregunta(4)

Su respuesta a la pregunta