2012-08-09 17 views
5
import java.util.ArrayList; 

public class ListOfClasses 
{ 

    private ArrayList<Class> classes; 

    public ArrayList<Class> getClasses() 
    { 
     return classes; 
    } 

    public void setClasses(ArrayList<Class> classes) 
    { 
     this.classes = classes; 
    } 
} 

इसके लिए होना चाहिए, मैं ग्रहण में निम्न चेतावनी मिल -ग्रहण चेतावनी - कक्षा एक कच्चा प्रकार है। सामान्य प्रकार कक्षा <T> के सन्दर्भ पैरामिट्रीकृत

कक्षा एक कच्चे प्रकार है। सामान्य प्रकार कक्षा के संदर्भ होना चाहिए पैरामिट्रीकृत

यह एक earlier question में पूछा गया था, लेकिन इस सवाल का जवाब स्प्रिंग फ्रेमवर्क के लिए विशिष्ट था। लेकिन मुझे वसंत के साथ कुछ भी करने के बावजूद यह चेतावनी मिल रही है। तो समस्या क्या है?

+0

क्या इस प्रकार को एक ऐरेलिस्ट होना चाहिए? –

उत्तर

9

मुझे संदेह है कि कक्षा एक कच्ची प्रकार है। आप

private List<Class<?>> classes; 

या इस विशेष चेतावनी को दबाने का प्रयास कर सकते हैं।

मैं इस मामले में चेतावनी को अनदेखा कर दूंगा। मैं एक रक्षात्मक प्रति का उपयोग करने पर भी विचार करता हूं।

private final List<Class> classes = new ArrayList<>(); 

public List<Class> getClasses() { 
    return classes; 
} 

public void setClasses(List<Class> classes) { 
    this.classes.clear(); 
    this.classes.addAll(classes); 
} 
1

public class ListOfClasses 
{ 

    private ArrayList<Class<?>> classes; 

    public ArrayList<Class<?>> getClasses() 
    { 
     return classes; 
    } 

    public void setClasses(ArrayList<Class<?>> classes) 
    { 
     this.classes = classes; 
    } 
} 

कक्षा एक पैरामिट्रीकृत प्रकार के रूप में अच्छी तरह से है की कोशिश करो, और यदि आप एक प्रकार तर्क नहीं घोषित करते हैं, तो आप कच्चे प्रकार जहां पैरामिट्रीकृत प्रकार उम्मीद कर रहे हैं का उपयोग कर के लिए एक चेतावनी मिलती है।

0

समस्या यह है कि आप लौटे वर्ग के प्रकार के बारे में कुछ भी नहीं कह सकते हैं। यह चेतावनी बहुत उपयोगी नहीं है। चूंकि आप यह नहीं जानते कि किस प्रकार की कक्षा है, आप इसमें तर्क तर्क नहीं जोड़ सकते हैं। आप इसे इस तरह करते हैं:

public Class<? extends Object> getClasses {} 

आप के बाद से सब कुछ जावा में वस्तु फैली हुई है, पुरातन को छोड़कर इसे बेहतर बनाने नहीं है,। मैं इस संकेतों को अनदेखा करता हूं, या उन्हें बदल देता हूं।

संबंधित मुद्दे