instanceof
किसी ऑब्जेक्ट के प्रकार के रनटाइम निर्धारण के लिए उपयोग किया जाता है। आप यह निर्धारित करने की कोशिश कर रहे हैं कि x
वास्तव में प्रोग्राम चल रहा है, तो J
प्रकार का एक ऑब्जेक्ट है, इसलिए यह संकलित करता है।
आप सोच यह एक संकलन समय त्रुटि हो जाना चाहिए, क्योंकि आपको लगता है संकलक x
के प्रकार पता नहीं है रहे थे?
संपादित
किर्क Woll टिप्पणी की है के रूप में (धन्यवाद किर्क Woll!), तुम अगर x
देख रहे हों, तो एक instanceof
एक ठोस वर्ग है, और संकलक x
के प्रकार का निर्धारण कर सकते हैं, तो आप मिल जाएगा संकलन समय पर एक त्रुटि।
जावा भाषा विशिष्टता से:
ReferenceType को RelationalExpression की एक डाली एक संकलन समय त्रुटि के रूप में अस्वीकृत कर दिया जाएगा, तो instanceof रिलेशनल अभिव्यक्ति वैसे ही एक संकलन समय त्रुटि पैदा करता है। ऐसी स्थिति में, अभिव्यक्ति के उदाहरण का परिणाम कभी भी सच नहीं हो सकता है।
इस का एक उदाहरण के रूप में:
import java.io.Serializable;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.ObjectInputStream;
class SerializableClass implements Serializable
{
private writeObject(ObjectOutputStream out) {}
private readObject(ObjectInputStream in) {}
}
public class DerivedSerializableClass extends SerializableClass
{
public static void main(String[] args)
{
DerivedSerializableClass dsc = new DerivedSerializableClass();
if (dsc instanceof DerivedSerializableClass) {} // fine
if (dsc instanceof Serializable) {} // fine because check is done at runtime
if (dsc instanceof String) {} // error because compiler knows dsc has no derivation from String in the hierarchy
Object o = (Object)dsc;
if (o instanceof DerivedSerializableClass) {} // fine because you made it Object, so runtime determination is necessary
}
}
साइड नोट - भाषा के लिए कोई टैग जोड़ने की भूल नहीं है कृपया। मैंने आपके लिए "जावा" जोड़ा। – EboMike
खेद मैं – user439526