मैं एक अजीब व्यवहार पर ठोकर खा रहा हूं जिसे मैं समझ नहीं पा रहा हूं।जेनिक्स में जेनिक्स में @SuppressWarnings ("अनचेक") जोड़ें एकल रेखा से ग्रहण कंपाइलर त्रुटि
मुझे एक सामान्य को एक स्ट्रिंग डालना है और यह एक चेतावनी उत्पन्न कर रहा है।
Type safety : Unchecked cast from String to T
अगर मैं विधि घोषणा ऊपर
@SuppressWarnings("unchecked")
जोड़ने यह ठीक काम करता है।यदि मैं इसे असाइनमेंट के ऊपर जोड़ता हूं तो यह ग्रहण में एक कंपाइलर त्रुटि उत्पन्न करता है।
यह ठीक काम करता है।
@SuppressWarnings("unchecked")
public <T> T search(final String query){
T returnValue = null;
...
if(returnValue instanceof String){
returnValue = (T) collection.getString(attrName);
}
यह ठीक काम नहीं करता है।
public <T> T search(final String query){
T returnValue = null;
...
if(returnValue instanceof String){
@SuppressWarnings("unchecked") // Compiler error: "returnValue cannot be resolved to a type"
returnValue = (T) collection.getString(attrName);
}
कोई विचार क्या चेतावनी को दबाने के दो तरीकों के बीच विसंगति पैदा कर रहा है?
, यहाँ आया क्योंकि मैं त्रुटि समझ में नहीं आया _ "टोकन 'परिणाम' पर सिंटेक्स त्रुटि, VariableDeclaratorId इस टोकन के बाद उम्मीद" _ ग्रहण में। आपका स्पष्टीकरण क्या संकलक कोशिश करता है और यह क्यों विफल रहता है महान है! अगर कोई और इस वाक्यविन्यास त्रुटि की खोज करता है तो बस इस टिप्पणी को जोड़ना। – user1438038