Java:是否可以将Class <?>对象与泛型类型参数进行比较?

PH-*_*ero 1 java generics

假设我有一个类列表:

List<Class<?>> classes;
Run Code Online (Sandbox Code Playgroud)

如果我现在采用其中一个类,让我们说...第二个,并且想知道它是否代表String类,我会做以下事情:

classes.get(1).equals(String.class)
Run Code Online (Sandbox Code Playgroud)

但我怎么知道它是否代表一种通用类型......说T?

class Foo<T> {

    void someMethod(){

        System.out.println(classes.get(1).equals(T)); //error: T cannot be resolved to a variable
    }
}
Run Code Online (Sandbox Code Playgroud)

我试过了

T.class
(Class<T>)T
Run Code Online (Sandbox Code Playgroud)

但没有任何作用.我真的想知道这是否可能,如果可能的话,如何实现它.
感谢您的关注!=)

the*_*oop 7

由于类型擦除(http://en.wikipedia.org/wiki/Type_erasure),这在Java中是不可能的- T在运行时实际上不存在,它仅作为编译器的信息存在.解决这个问题的标准方法是Class<T>从任何地方传入a T并使用该类对象.