ऐसा लगता है आप Class.getInterfaces()
लिए देख रहे हैं की तरह:
public static void showInterfaces(Object obj) {
for (Class<?> iface : obj.getClass().getInterfaces()) {
System.out.println(iface.getName());
}
}
उदाहरण के लिए, LinkedList
के क्रियान्वयन की दिशा में है कि प्रिंट:
java.util.List
java.util.Deque
java.lang.Cloneable
java.io.Serializable
ध्यान दें कि java.util.Queue
इस से प्रदर्शित नहीं किया जाता है, क्योंकि java.util.Deque
इसे विस्तारित करता है - इसलिए यदि आप सभी इंटरफ़ेस लागू करना चाहते हैं, तो आपको रिकर्स करना होगा। उदाहरण के लिए, इस तरह के कोड के साथ:
public static void showInterfaces(Object obj) {
showInterfaces(obj.getClass());
}
public static void showInterfaces(Class<?> clazz) {
for (Class<?> iface : clazz.getInterfaces()) {
System.out.println(iface.getName());
showInterfaces(iface);
}
}
... उत्पादन होता है:
java.util.List
java.util.Collection
java.lang.Iterable
java.util.Deque
java.util.Queue
java.util.Collection
java.lang.Iterable
java.lang.Cloneable
java.io.Serializable
... और अब आप ध्यान दें हूँ कि Iterable
और Collection
घटित दो बार :) आप एकत्र कर पाया डुप्लिकेशंस से बचने के लिए, "सेट में अब तक इंटरफ़ेस देखा गया"।
स्रोत
2013-10-09 15:28:25