obiously, !b instanceof SomeType
(पढ़ें: "b
नकारना, तो अगर परिणामस्वरूप मूल्य प्रकार SomeType
की है जाँच") की तरह एक अभिव्यक्ति जावा में ज्यादा मतलब नहीं है:
तार्किक रूप से, b
किसी तरह का होना ही था बूलियन ऑब्जेक्ट (ताकि !
काम करता है) और यहां तक कि यदि आपने इसके मूल्य को अस्वीकार कर दिया है, तो यह अभी भी एक ही प्रकार का बुलियन वैल्यू होगा, तो इसे पहले स्थान पर क्यों नकार दें?
(असल में, आप भी यह नहीं कर सकते: b
एक boolean
नहीं किया जा सकता, क्योंकि instanceof
इसे फिर से की आवश्यकता है एक असली Object
होने के लिए है, लेकिन फिर, अगर b
एक Boolean
है, !b
अभी भी एक आदिम करने के लिए मूल्यांकन करेगा boolean
, इसलिए instanceof
काम नहीं करता है।)
इसलिए हम कह सकते हैं कि !b instanceof SomeType
जावा में कोई अर्थपूर्ण अर्थ नहीं है। तो हम इसका अर्थ फिर से सौंप सकते हैं "जांचें कि b
SomeType
प्रकार का नहीं है" - क्या हम नहीं कर सकते?
यह देखते हुए कि इस अर्थ की दृष्टि से बदल दिया गया है सकते हैं और अभी भी नहीं किया गया था मुझे निष्कर्ष यह है कि यह वास्तव में जानबूझकर नहीं था, लेकिन एक और अधिक व्यावहारिक instanceof
के लिए कम पूर्वता के साथ जाने के वजह नहीं थी साथ छोड़ देता है:
मेरे सिर के ऊपर से, मुझे संदेह होगा कि अगर आप instanceof
यूनरी ऑपरेटर !
की तुलना में उच्च प्राथमिकता देते हैं तो पार्सिंग जटिल हो जाती है। आप इसे देखना चाहेंगे।
दूसरी ओर, यदि !b instanceof SomeType
मतलब होगा "जाँच करता है, तो b
प्रकार SomeType
की नहीं है", यह अभी भी यह सोच कर कि !
b
पर चल रही है जबकि वास्तव में इस instanceof
का परिणाम नकारता में नौसिखिया प्रोग्रामर धोखा हो सकता है, तो यह कम है !b instanceof SomeType
छोड़ने के लिए अस्पष्ट अनिवार्य रूप से अपरिभाषित।
यह [programmers.stackexchange.com] पर नहीं होना चाहिए (http://programmers.stackexchange.com/)? – Adrian
@ एड्रियन इमो यह बेहतर ढंग से फिट है और मुझे प्रोग्रामर के विवरण में भाषा-सिद्धांत के बारे में कुछ भी नहीं दिख रहा है। – Voo