Genéricos Java: Comparando a classe do Objeto o para <E>

Digamos que eu tenho a seguinte classe:

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

Como eu verificaria issoo é da mesma classe queE?

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

Não consigo alterar a assinatura do método de(Object o) como estou substituindo uma superclasse e, portanto, não posso escolher minha assinatura de método.

Eu também preferiria não seguir o caminho de tentar um elenco e depois capturar a exceção resultante se ela falhar.

questionAnswers(4)

yourAnswerToTheQuestion