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

Por esto, me sale el siguiente aviso en Eclipse -Advertencia de eclipse: la clase es un tipo sin procesar. Las referencias a la clase de tipo genérico <T> se deben parametrizar

clase es un tipo de prima. Las referencias a la clase de tipo genérico debe ser parametrizado

Esto se le preguntó en una earlier question, pero la respuesta fue específica para el Spring Framework. Pero recibo esta advertencia incluso sin tener nada que ver con Spring. Entonces, ¿cuál es el problema?

+0

¿El tipo tiene que ser un ArrayList? –

Respuesta

9

Sospecho que se queja de que Class es un tipo sin formato. Puede probar

private List<Class<?>> classes; 

o suprimir esta advertencia en particular.

Ignoraría la advertencia en este caso. También consideraría usar una copia defensiva.

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

Trate

public class ListOfClasses 
{ 

    private ArrayList<Class<?>> classes; 

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

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

clase es un tipo parametrizado así, y si no se declara un argumento tipo, entonces se obtiene una advertencia para el uso de tipos primas donde se espera que los tipos parametrizados.

0

El problema es que no se puede decir nada sobre el tipo de clase devuelta. Esta advertencia no es muy útil. Como no sabes qué tipo de clase es, no puedes agregarle argumentos de tipo. Si lo haces de esta manera:

public Class<? extends Object> getClasses {} 

Usted no lo hacen mejor, ya que todo se extiende de objetos en Java, excepto primitivas. Ignoro estas sugerencias o las rechazo.

Cuestiones relacionadas