Explicação ArrayList [RESOLVIDO]

Bom Dia pessoal!

Alguém poderia, me dar uma explicação, do por que neste meu método eu recebo o aviso que coloco logo abaixo do código:

java.util.ArrayList list = new java.util.ArrayList(); java.sql.ResultSet rs = null; try { rs = sql.executarQuery(); while (rs.next()) { SetorVO setorVO = new SetorVO(); setorVO.setCodigo(new Integer(rs.getInt("cod"))); setorVO.setNome(rs.getString("nome")); setorVO.setCentroCustoPiramide(rs.getString("cc_piramide")); if (rs.wasNull()) setorVO.setCentroCustoPiramide(""); list.add(setorVO); } }

...\src\com\hospital\setor\SetorBD.java:223: warning: [unchecked] unchecked call to add(E) as a member of the raw type java.util.ArrayList
Se eu passar o ArrayList com o parametro ele não mostra o aviso. Mas se eu deixar sem, ele compila, mas mostra o aviso.

Alguém, poderia por favor me dizer a razão por isto acontecer?

[quote=fernandoeick]Bom Dia pessoal!

Alguém poderia, me dar uma explicação, do por que neste meu método eu recebo o aviso que coloco logo abaixo do código:

java.util.ArrayList list = new java.util.ArrayList(); java.sql.ResultSet rs = null; try { rs = sql.executarQuery(); while (rs.next()) { SetorVO setorVO = new SetorVO(); setorVO.setCodigo(new Integer(rs.getInt("cod"))); setorVO.setNome(rs.getString("nome")); setorVO.setCentroCustoPiramide(rs.getString("cc_piramide")); if (rs.wasNull()) setorVO.setCentroCustoPiramide(""); list.add(setorVO); } }

...\src\com\hospital\setor\SetorBD.java:223: warning: [unchecked] unchecked call to add(E) as a member of the raw type java.util.ArrayList
Se eu passar o ArrayList com o parametro ele não mostra o aviso. Mas se eu deixar sem, ele compila, mas mostra o aviso.

Alguém, poderia por favor me dizer a razão por isto acontecer?[/quote]

É que a partir do Java 5 todas as coleções devem ser parametrizadas. se você quiser evitar isso coloque

@SuppressWarnings("unchecked")

antes do método

[]´s

Meu projeto tem centenas de situações como esta que descrevi (é um sistema pronto que a empresa acabou de comprar). Nossos sistemas tem toda uma padronização e querem que funcione como no código que escrevi no primeiro post.

Tem como eu fazer isso no projeto inteiro, através do NetBeans, para não precisar colocar em cada um dos meus métodos isso que vc sugeriu?

Só pra constar aqui que o problema foi resolvido e descrevo a solução caso seja útil para alguém futuramente.

O projeto novo (ao qual mencionei) usava em Properties do projeto -> Compiling -> Additional Compiler Options a opção “-Xlint:unchecked”. Removi isto e ficou do jeito que eu queria, que é também a maneira como nossos outros projetos rodam.

É isso. Valeu. :thumbup:

Se o teu projeto foi feito com regras do 1.4, compile o projeto como Java 1.4.

Se quer passar para Java >= 5, respeite as regras e refatore o projeto p/ a nova versão.

Compilar como unchecked não é uma boa solução, levará a muitos erros em tempo de execução que podem ser pegos em tempo de design.