如何获取泛型方法参数的类型参数类?

Ade*_*lin 2 java generics

如何获取传递给方法的参数的类型参数?比如我有

List<Person> list = new ArrayList<Person>(); 

public class Datastore {

  public <T> void insert(List<T> tList) {
     // when I pass the previous list to this method I want to get Person.class ; 
  }
} 
Run Code Online (Sandbox Code Playgroud)

Den*_*sca 10

由于类型擦除,您可以这样做的唯一方法是将类型作为参数传递给方法.

如果您可以访问数据存储区代码并且可以修改,则可以尝试执行以下操作:

public class Datastore {
    public T void insert(List<T> tList, Class<T> objectClass) {
    }
}
Run Code Online (Sandbox Code Playgroud)

然后通过这样做来调用它

List<Person> pList = new ArrayList<Person>();
...
dataStore.insert(pList, Person.class);
Run Code Online (Sandbox Code Playgroud)

我在这类问题中看到的每个响应都是将类作为参数发送给方法.


Aja*_*rge 4

由于类型擦除,我怀疑我们是否能得到它,除非有一些反射魔法可能能够做到这一点。

但如果列表中有元素,我们可以访问它们并对它们调用 getClass。