2012-04-15 25 views
88

कुछ वर्ग कैसे इंटरफ़ेस लागू करता है यह जांचने के लिए? जब होने:यह जांचने के लिए कि कोई ऑब्जेक्ट किसी इंटरफ़ेस को लागू करता है या नहीं?

Character.Gorgon gor = new Character.Gorgon();

कैसे gorMonster इंटरफ़ेस लागू करता है, तो जाँच करने के लिए?

public interface Monster { 

    public int getLevel(); 

    public int level = 1; 
} 

public class Character { 
    public static class Gorgon extends Character implements Monster { 
     public int level; 
     @Override 
     public int getLevel() { return level; } 

     public Gorgon() { 
      type = "Gorgon"; 
     } 
    } 
} 

विधि getLevel()Gorgon में सही ढंग से अधिरोहित है, इसलिए नए gor की level लौट सकते हैं बनाया?

+0

मैं तुम्हें instanceof कीवर्ड की आवश्यकता है लगता है। –

उत्तर

165

एक उदाहरण के लिए

Character.Gorgon gor = new Character.Gorgon(); 

तो कर

gor instanceof Monster 

एक कक्षा उदाहरण के लिए कर

Class<?> clazz = Character.Gorgon.class; 
Monster.class.isAssignableFrom(clazz); 
+0

विधि पैरामीटर के बारे में कैसे 'सार्वजनिक शून्य करें कुछ ([ऑब्जेक्ट लागू Serializable] param) '? इसके लिए सही वाक्यविन्यास क्या है? –

+0

ये, '... isAssignableFrom() ', गोरगोनिट निर्धारित करने का एकमात्र तरीका एक राक्षस है। –

31

उपयोग

if (gor instanceof Monster) { 
    //... 
} 
1

यदि आप public void doSomething([Object implements Serializable]) जैसी कोई विधि चाहते हैं तो आप इसे इस public void doSomething(Serializable serializableObject) की तरह टाइप कर सकते हैं। अब आप इसे किसी ऑब्जेक्ट को पास कर सकते हैं जो Serializable लागू करता है लेकिन serializableObject का उपयोग करके आप केवल Serializable इंटरफ़ेस से ऑब्जेक्ट में लागू विधियों तक पहुंच सकते हैं।

7

सामान्य में AnInterface और किसी भी वर्ग के anInstance के लिए:

AnInterface.class.isAssignableFrom(anInstance.getClass()); 
संबंधित मुद्दे

 संबंधित मुद्दे