如果传入的java类是接口List的实现,那么我需要编写一个返回true的函数。有人知道如何在java中做到这一点?如何判断一个类是否是java接口的实现
类似:
public boolean canConvert(Class c) {
//return true is c is an implementation of the interface List
}
感谢
如果传入的java类是接口List的实现,那么我需要编写一个返回true的函数。有人知道如何在java中做到这一点?如何判断一个类是否是java接口的实现
类似:
public boolean canConvert(Class c) {
//return true is c is an implementation of the interface List
}
感谢
有两种不同的情况:
要检查一个给定类是List
一个子类/实施者。从你的方法签名(Class c
)来看,这就是你想要的。在这种情况下使用
List.class.isAssignableFrom(c)
要看到,如果一个给定的对象是一个类,我们的List
子类/实施者的一个实例。在这种情况下,使用obj instanceof List
,正如Bala R所建议的那样。
尝试使用instanceof
操作。
return c instanceof List;
这对'Class'不起作用。 – bmargulies 2011-05-18 20:15:53
如果c是一个类,你想c.isInstance(List.class) – 2011-05-18 20:15:58
@bmargulies @Reverend问题说'如果c是'的实现。我们不知道它是否是java.lang.Class。 – 2011-05-18 20:18:54
如果它是一个实例,你做
c instanceof List
如果一个类,那么你做
List.class.isAssignableFrom(c)
+1为简洁起见。 – karmakaze 2011-05-18 21:25:17
通过调用Class
这回答了这个问题相当广泛this function。如果你需要特别知道它是否直接实现,你必须走数据结构。
一个更具体的答案来自搜索getInterfaces的结果。
有点奇怪的问题。在我看来,你有一个实例继承java.lang.Class实现List接口?这对我来说没有意义。你能澄清吗? – 2011-05-18 20:24:52