(action instanceof logic.UserBehaviour)
सच वापस आ जाएगी अगर कार्रवाई एक प्रकार है कि UserBehavior फैली का एक उद्देश्य है।
एक अंश http://download.oracle.com/javase/tutorial/java/nutsandbolts/op2.html
प्रकार तुलना ऑपरेटर
instanceof
instanceof ऑपरेटर एक निर्दिष्ट प्रकार के लिए एक वस्तु तुलना से। आप यह जांचने के लिए इसका उपयोग कर सकते हैं कि कोई ऑब्जेक्ट कक्षा का उदाहरण है, सबक्लास का उदाहरण, या का एक उदाहरण जो एक विशेष इंटरफ़ेस लागू करता है।
निम्नलिखित कार्यक्रम, InstanceofDemo, एक माता पिता के वर्ग (नाम जनक), एक सरल अंतरफलक ( MyInterface नाम), और एक बच्चे वर्ग ( बाल नाम) है कि माता-पिता से विरासत और इंटरफ़ेस लागू करता है परिभाषित करता है।
class InstanceofDemo {
public static void main(String[] args) {
Parent obj1 = new Parent();
Parent obj2 = new Child();
System.out.println("obj1 instanceof Parent: " + (obj1 instanceof Parent));
System.out.println("obj1 instanceof Child: " + (obj1 instanceof Child));
System.out.println("obj1 instanceof MyInterface: " + (obj1 instanceof MyInterface));
System.out.println("obj2 instanceof Parent: " + (obj2 instanceof Parent));
System.out.println("obj2 instanceof Child: " + (obj2 instanceof Child));
System.out.println("obj2 instanceof MyInterface: " + (obj2 instanceof MyInterface));
}
}
class Parent{}
class Child extends Parent implements MyInterface{}
interface MyInterface{}
आउटपुट:
obj1 instanceof Parent: true
obj1 instanceof Child: false
obj1 instanceof MyInterface: false
obj2 instanceof Parent: true
obj2 instanceof Child: true
obj2 instanceof MyInterface: true
instanceof ऑपरेटर का उपयोग करते समय यह ध्यान रखें कि अशक्त कुछ भी का एक उदाहरण नहीं है।
action.getClass().getSuperClass().name().equals("logic.UserBehavior");
toString()
करने के लिए कॉल है:
return (action instanceof logic.UserBehavior);
आपका विधि इस के साथ बेहतर होगा:
"नाम बराबर" सख्ती से सही नहीं है। '==' के साथ सरल और बेहतर (देखें Ulrik का जवाब) – irreputable
मैं सहमत हूं और इसके बारे में शुरुआत में नहीं था, (+1) उसका जवाब पहले से ही है। – Mat