मैंने कोशिश की है:
पैकेज ro.ex; आयात java.io.IOException; आयात करें java.lang.reflect.Type; क्लास एक्स {सार्वजनिक बूलियन आईआईएनएस (ऑब्जेक्ट ओ, क्लास टी) {ओ इंस्टालेशन टी; } सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] args) IOException {}}
उपरोक्त कोड अज्ञात वर्ग "टी" बढ़ाएगा
मेरा प्रश्न यह है:
अद्यतन:निम्न कोड intellij विचार वाक्यविन्यास चेकर पास नहीं कर सकता
सार्वजनिक बूलियन isIns (ऑब्जेक्ट ओ, क्लास & लेफ्टिनेंट;? & Gt; टी) {रिटर्न ओ इंस्टाशन टी; }
इसलिए विचार में सही कोड है:
सार्वजनिक बूलियन isIns (ऑब्जेक्ट ओ, क्लास & लेफ्टिनेंट;? & Gt; टी) {return t.isAssignableFrom ( o.getClass ()); }
और अधिक आसान तरीका है:
पैकेज ro.ex; आयात java.io.IOException; आयात करें java.lang.reflect.Type; कक्षा पूर्व {सार्वजनिक बूलियन है Ins (ऑब्जेक्ट ओ, क्लास टी) {रिटर्न टी। इंस्टेंस (ओ); } सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग [] आर्ग्स) IOException फेंकता {ऑब्जेक्ट आर = नया एक्स ()। आईआईएनएस ("", स्ट्रिंग। क्लास); System.out.println (r + "\ t \ t" + नया अपवाद ()। GetStackTrace () [0] .getFileName () + ":" + नया अपवाद ()। GetStackTrace () [0] .getLineNumber () ); }}
यदि आप x instanceof t
लिखते हैं, तो t
एक वर्ग होना चाहिए। आपके isIns
विधि में, t
एक वर्ग नहीं है, यह एक प्रकार
वर्ग वर्ग
, हालांकि, प्रस्ताव विधियों की पेशकश करता है जिसके साथ आप यह तय कर सकते हैं कि कोई अन्य श्रेणी इसके उपवर्ग है: Class.isAssignableFrom (Class)
। तो आप अपना तरीका बदल सकते हैं:
सार्वजनिक बूलियन आईआईएनएस (वस्तु ओ, कक्षा टी) {वापसी टी। }
(मैंने भी अपना कोड बदल दिया है ताकि परिणामस्वरूप कॉलर को लौटा दिया गया।)
Comments
Post a Comment