2017-02-15 125 views
0

我有一个关于Java泛型的基本问题。我有借此作为参数的方法:Java泛型类作为参数

public id findKey(List<String> ids, CustomClass clazz) { 
    repos.findID(ids, clazz); 
} 

然后我想使用Java泛型类作为其他方法的参数:

repos.findID(ids, clazz); 

但我findID方法需要Java泛型类而不是clazz。如何从findkey参数获取我的clazz参数并将其转换为泛型类?如果我这样做:

public id findKey(List<String> ids, Class<T> clazz) { 
    repos.findID(ids, clazz); 
}  

我得到一个错误,因为它不会承认我的T.

我在亏损,在这个东西是如何工作的,并希望得到任何帮助。

编辑:解决了它。我可以用 ?或者明确声明我想要的类类型并接受它。

+6

除非在方法的其他地方实际需要'T',否则''类就足够了。否则,只需定义一个类型变量:'public id findKey(...'。 –

+0

谢谢,我在发帖后10秒就解决了这个问题, –

+1

然后请你自己回答 - 也许它可以帮助其他人 –

回答

1

有两种选择:

  • 定义类型为未知

    public id findKey(List<String> ids, Class<?> clazz) 
    
  • 定义类型变量

    public <T> id findKey(List<String> ids, Class<T> clazz) 
    
1

使用public id findKey(List<String> ids, Class<?> clazz)和阅读关于通配符