मैं बहुत उलझन में हूँ पर कास्ट नहीं कर सकते हैं ...कार्यान्वित इंटरफ़ेस
मैं एक वर्ग जो सीधे एक अंतरफलक को लागू करता है:
public class Device implements AutocompleteResult
{...}
यहाँ सबूत है कि मैं सही पर देख रहा हूँ चर:
Object match = ...;
log.debug(match.getClass()); // Outputs 'Device'
log.debug(match.getClass().getInterfaces()[0]); // Outputs 'AutocompleteResult'
फिर भी जब मैं इंटरफ़ेस के वर्ग का एक उदाहरण कास्ट करने के लिए प्रयास करें:
AutocompleteResult result = (AutocompleteResult) match;
मुझे क्लासकास्ट अपवाद मिलता है!
ClassCastException: Device cannot be cast to AutocompleteResult
इसके अलावा
, isAssignableFrom
रिटर्न झूठी और मुझे यकीन है कि क्यों नहीं कर रहा हूँ:
log.debug(AutocompleteResult.class.isAssignableFrom(Device.class));
doc से
:
निर्धारित करता है कि वर्ग या इंटरफ़ेस इस वर्ग का प्रतिनिधित्व करती ऑब्जेक्ट या तो एक सुपरक्लास या superinterf जैसा है निर्दिष्ट वर्ग पैरामीटर द्वारा प्रतिनिधित्व कक्षा या इंटरफेस का ऐस।
क्या मैं हमेशा किसी ऑब्जेक्ट को अपने वर्ग के कार्यान्वयन में ऑब्जेक्ट नहीं डालना चाहता हूं?
धन्यवाद।
हाँ, आप चाहिए! (और आपको स्पष्ट कलाकारों की भी आवश्यकता नहीं है।) कृपया कुछ स्वयं निहित उदाहरण कोड पोस्ट करें जो समस्या का प्रदर्शन करता है। –