मैंने इस फ़ंक्शन को कार्यान्वित किया है:जावा: X से Y/अनस्टेक्ड कास्ट को CastOrNull को कार्यान्वित करने के लिए कैसे करें
static <X,Y> Y castOrNull(X obj) {
try {
return (Y)obj;
}
catch(ClassCastException e) {
return null;
}
}
यह मुझे संकलक चेतावनी देता है:
Type safety: Unchecked cast from X to Y
जिसे मैं बिल्कुल समझ नहीं पा रहा हूं। क्या try/catch
नहीं है जिसे मैं यहां देख रहा हूं? क्या मैं चेतावनी को अनदेखा कर सकता हूं?
क्या मेरा कार्य अपेक्षित काम करेगा या नहीं? मैं इसे सही तरीके से कैसे कार्यान्वित करूं?
मैंने obj instanceof Y
चेक के साथ भी कोशिश की लेकिन यह जावा हैंडल जेनरिक के तरीके से काम नहीं करता है।
btw।, यह फ़ंक्शन मेरे लिए काफी उपयोगी लगता है (कुछ अन्य कोड को और अधिक साफ करने के लिए)। मुझे आश्चर्य है कि जावा में ऐसा कोई फ़ंक्शन पहले से मौजूद हो सकता है?
एक उदाहरण जहां मैं इसका उपयोग करना चाहता हूं:
void removeEmptyRawStrings() {
for(Iterator<Entity> e = entities.iterator(); e.hasNext();) {
RawString s = castOrNull(e.next());
if(s != null && s.content.isEmpty()) e.remove();
}
}
मेरे पास अक्सर मेरे कोड में ऐसे मामले हैं। और मुझे लगता है कि यह किसी और चीज़ की तुलना में अधिक पठनीय और सरल है। लेकिन अगर आपको इस कोड को और भी सरल बनाने के बारे में कोई जानकारी है तो कृपया मुझे एक बेहतर सुझाव दें।
मैं आज इस चेतावनी के बारे में सोच रहा था और क्या चेक किया गया कलाकार होना संभव था, लेकिन मुझे नहीं लगता कि आप इसे कर सकते हैं। – DeliveryNinja