2011-10-05 92 views
0

我有一個間接實現接口的類(它的超類或超級類實現可以實現),我想知道類是否實現接口。反射和接口

在編碼方面:

 import java.lang.reflect.Type; 

     class My implements MyName{ 

     } 

     public class Tset extends My implements yourName{ 
     public static void main(String[] args) { 
      Class[] allClassAndInterfaces = Tset.class.getInterfaces(); 
    //but allClassAndInterfaces is not giving me the MyName Interface 
    //although it gives me YourName Interface 
System.out.println(ArrayUtils.toString(lits)); 
     } 
} 
+0

基本上,我想所有類實現的直接和間接接口,class.getInterfaces()是無法做到這一點。 – Chandan

+0

你可以使用遞歸 – michael667

+0

是否沒有任何直接的API ... – Chandan

回答

2

有一個在Class類稱爲isAssignableFrom這你想要做什麼具體的方法。在你的情況,這應該返回true:

MyName.class.isAssignableFrom(My.class); 
+0

謝謝你,你做的伎倆...很多謝謝:) – Chandan

+0

我可以得到所有實現的接口的列表以及...是任何這樣的方法 – Chandan

+0

@Chandan:對於那個你需要遵循類層次結構(使用Class.getSuperclass和Class.getInterfaces)。 –

0

你也可以使用instanceof檢查類的(一個實例)是否實現了一個接口或沒有。

編輯:

interface X { } 

class A implements X { } 

System.out.println(new A() instanceof X); // <---- prints true 
+0

不,我有一個類litrel,它不是在接口的heirarchy我想檢查出... instaceof ... heirarchy是必要的 – Chandan

+0

即,Tset.class instanceof MyName將是一個編譯時錯誤 – Chandan

+0

好吧,我以爲你有一個實例。 – michael667