如何在Java中检查一个泛型类型是否实现了特定类型的泛型接口?
- 论坛
- 如何在Java中检查一个泛型类型是否实现了特定类型的泛型接口?
10 浏览
如何在Java中检查一个泛型类型是否实现了特定类型的泛型接口?
可能重复:
我对Java泛型很陌生,来自.NET世界的我习惯了编写这样的方法:
public void genericMethod(T genericObject) { if (genericObject is IList ) { //做一些操作... } }
该方法接受一个泛型类型的对象,并检查该对象是否实现了特定版本的通用接口IList<>
,在这种情况下是IList
。
现在,在Java中,我可以这样做:
publicvoid genericMethod(T genericObject) { if (genericObject instanceof Set>) { //做一些操作... } }
但是
Java不允许我这样做if (genericObject instanceof Set
据我所知,由于类型擦除,通常在Java中这将由一个类对象处理,我们将执行以下操作:
publicvoid genericMethod(T genericObject) { Class testClass = OurTestingType.class; if (genericObject.getClass() == testClass) { //做一些操作... } }
但是由于我要检查的类型是一个通用接口,所以无法这样做:
Class
那么,在Java中,我如何检查一个泛型对象是否实现了特定类型的Set
?