Quando estou adicionando um objeto String em um vetor, o seguinte aviso ocorre. Por que?
TestCollectionsMain.java:14: aviso: [desmarcada] chamada não verificada para adicionar (E) como membro do tipo bruto java.util.Vector vec.add ("M");
Respostas:
0 para resposta № 1Desde o Java 1.5, é recomendável usar a versão genérica desses métodos.
Se você insistir em usar um tipo bruto, poderá ignorar com segurança o aviso.
BTW, você provavelmente deveria usar ArrayList
ao invés de Vector
é um pouco mais rápido e basicamente o mesmo.
Isto irá funcionar, apenas ignore o aviso.
public static void main( String [] args ) {
Vector v = new Vector();
v.add("M");
}
Isso seria melhor:
public static void main( String [] args ) {
List<String> v = new ArrayList<String>();
v.add("M");
}
O uso de genéricos oferece dois benefícios.
1) Ajuda você a checar em tempo de compilação, os valores adicionados à coleção são do mesmo tipo.
2) Ajudar você a evitar a transmissão ao obter os valores da coleção.
Mas, isso é apenas uma opção (não um erro de compilador) se você ainda quiser usar a versão não genérica, você está livre para fazer isso, apenas ignore a exceção, ou como jskggz diz, apenas adicione:
@SuppressWarnings("unchecked")
public static void main(String[] args) {
Para o seu método.
1 para resposta № 2
É porque você não está usando genéricos para declarar seu vetor.
Tente isto:
List<String> vec = new ArrayList<String>();
vec.add("M");
1 para resposta № 3
Você pode declarar
Vector<String> vec = new Vector<String>();
ou use o
@SuppressWarnings("unchecked")
anotação no topo do seu método, se você realmente quer fazer isso. :-)