T
no es una variable, sino un marcador de posición para una clase que se define en tiempo de ejecución. Los genéricos son una característica de tiempo de compilación, por esa razón agregan cheques en tiempo de compilación que pueden no tener ningún significado en el tiempo de ejecución. Solo podemos verificar el tipo de objeto al que se hace referencia en tiempo de ejecución, que podría ser un tipo de superclase en el código. Si queremos pasar el tipo T
como parámetro al método, todo lo que tenemos que hacer es abordar de forma explícita como la siguiente:
void genericMethod(Class<T> tClass) {
if(String.class.isAssignableFrom(tClass))
o
void genericMethod(Class<T> tClass, T tArg) {
Tenga en cuenta que el tipo podría no ser el mismo que aquí podemos ver cómo manipular:
genericMethod(Number.class, 1);
¿Está tratando de comprobar si el elemento es una instancia de 'Test', una instancia de' T', o una instancia de 'Test'? –
StriplingWarrior
@NinjoeQuah Revisa mi respuesta – GingerHead