2011-05-18 240 views
0

如果传入的java类是接口List的实现,那么我需要编写一个返回true的函数。有人知道如何在java中做到这一点?如何判断一个类是否是java接口的实现

类似:

public boolean canConvert(Class c) { 

    //return true is c is an implementation of the interface List 

} 

感谢

+1

有点奇怪的问题。在我看来,你有一个实例继承java.lang.Class实现List接口?这对我来说没有意义。你能澄清吗? – 2011-05-18 20:24:52

回答

8

有两种不同的情况:

  • 要检查一个给定List一个子类/实施者。从你的方法签名(Class c)来看,这就是你想要的。在这种情况下使用

    List.class.isAssignableFrom(c) 
    
  • 要看到,如果一个给定的对象是一个类,我们的List子类/实施者的一个实例。在这种情况下,使用obj instanceof List,正如Bala R所建议的那样。

4

尝试使用instanceof操作。

return c instanceof List; 
+1

这对'Class'不起作用。 – bmargulies 2011-05-18 20:15:53

+0

如果c是一个类,你想c.isInstance(List.class) – 2011-05-18 20:15:58

+0

@bmargulies @Reverend问题说'如果c是'的实现。我们不知道它是否是java.lang.Class。 – 2011-05-18 20:18:54

2

如果它是一个实例,你做

c instanceof List 

如果一个类,那么你做

List.class.isAssignableFrom(c) 
+0

+1为简洁起见。 – karmakaze 2011-05-18 21:25:17

0

通过调用Class这回答了这个问题相当广泛this function。如果你需要特别知道它是否直接实现,你必须走数据结构。

一个更具体的答案来自搜索getInterfaces的结果。

相关问题