मान लें कि मेरे पास निम्न वर्ग है:जावा जेनिक्स: ऑब्जेक्ट ओ की श्रेणी <E> से तुलना करना
public class Test<E> {
public boolean sameClassAs(Object o) {
// TODO help!
}
}
मैं कैसे जांचूँगा कि o
E
के समान वर्ग है?
Test<String> test = new Test<String>();
test.sameClassAs("a string"); // returns true;
test.sameClassAs(4); // returns false;
मैं (Object o)
से विधि हस्ताक्षर नहीं बदल सकता क्योंकि मैं एक सुपरक्लास को ओवरराइड कर रहा हूं और इसलिए मेरी विधि हस्ताक्षर चुनने के लिए नहीं मिलता है।
मैं एक कलाकार का प्रयास करने की सड़क पर भी नहीं जाऊंगा और फिर परिणामस्वरूप अपवाद को पकड़ने में विफल रहता हूं।
मैं नहीं बल्कि बराबरी के साथ वर्गों की तुलना चाहते हैं:
तो अपने sameClassAs विधि की तरह दिखना चाहिए। या == का उपयोग करने के लिए एक विशेष कारण है? – ordnungswidrig
वे समकक्ष हैं। आईएमओ == पढ़ने के लिए आसान है (हालांकि इसका मतलब यह है कि पाठक को इस प्रकार के बारे में पता होना चाहिए)। इनलाइनिंग से पहले यह आंशिक रूप से तेज़ है। अब, जो मैंने परीक्षण नहीं किया है वह एक नल क्लैज है। –