2012-08-09 7 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; 
    } 
} 

Per questo, ottengo il seguente avviso in Eclipse -Avviso Eclipse - La classe è un tipo non elaborato. I riferimenti al tipo generico Classe <T> dovrebbero essere parametrizzato

Class è un tipo grezzo. I riferimenti al tipo di classe generica dovrebbero essere parametrizzato

Questo è stato chiesto in un earlier question, ma la risposta era specifico per la Spring Framework. Ma sto ricevendo questo avvertimento anche senza avere nulla a che fare con Spring. Quindi qual'è il problema?

+0

Il tipo deve essere un ArrayList? –

risposta

9

Sospetto che si lamenta che Class è un tipo grezzo. Puoi provare

private List<Class<?>> classes; 

o sopprimere questo avvertimento particolare.

Ignorerei l'avviso in questo caso. Vorrei anche prendere in considerazione l'utilizzo di una copia difensiva.

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

Prova

public class ListOfClasses 
{ 

    private ArrayList<Class<?>> classes; 

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

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

Class è un tipo parametrizzato così, e se non si dichiara un argomento di tipo, quindi si ottiene un messaggio di avviso per l'utilizzo di tipi prime in cui si prevede tipi parametrici.

0

Il problema è che non si può dire nulla sul tipo di classe restituita. Questo avvertimento non è molto utile. Dal momento che non sai quale tipo di classe è, non puoi aggiungere argomenti tipo ad esso. Se lo fate in questo modo:

public Class<? extends Object> getClasses {} 

Non si rendono meglio, dato che tutto si estende Object in Java, tranne primitive. Ignoro questi suggerimenti o li ignoro.

Problemi correlati