Galera, estou fazendo alguns simulados e travei na seguinte questão:
[quote]What will be the result of attempting to compile the following code?
public class RQ100_70 {
public static void main(String[] args) {
List<Integer> glst1 = new ArrayList(); //(1)
List nglst1 = glst1; //(2)
List nglst2 = nglst1; //(3)
List<Integer> glst2 = glst1; //(4)
}
}
Select the one correct answer.
(a) The code will compile without any warnings.
(b) The code will compile with an unchecked warning in (1).
© The code will compile with an unchecked warning in (2).
(d) The code will compile with an unchecked warning in (3).
(e) The code will compile with an unchecked warning in (4).
[/quote]
A resposta no livro, diz que a resposta correta é a alternativa B. Só que quando eu copio e colo o código no eclipse ele gera “warnings” em todas as linhas?
Ja tentei mexer nas configurações do eclipse, mas não consegui fazer uma configuração que exibesse warning somente na linha (1).
Vocês tem alguma idéia para me ajuda?
Abraços,
Tem certeza que nas outras linhas os warnings são do tipo “unchecked”?
Ou seriam warnings do tipo “raw type” ou “parameter not used”?
A pergunta fala de um tipo específico de warning:
(b) The code will compile with an unchecked warning in (1).
Na verdade, esse é um exemplo de pergunta mal formulada.
Se você simplesmente compilar no javac, ele não gerará warnings em nenhuma linha específica. A saída do console será:
Note: RQ100_70.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Se você fizer o que ele instrui, e usar o -Xlint, você receberá quatro warnings:
RQ100_70.java:6: warning: [rawtypes] found raw type: ArrayList
List<Integer> glst1 = new ArrayList(); //(1)
^
missing type arguments for generic class ArrayList<E>
where E is a type-variable:
E extends Object declared in class ArrayList
RQ100_70.java:6: warning: [unchecked] unchecked conversion
List<Integer> glst1 = new ArrayList(); //(1)
^
required: List<Integer>
found: ArrayList
RQ100_70.java:7: warning: [rawtypes] found raw type: List
List nglst1 = glst1; //(2)
^
missing type arguments for generic class List<E>
where E is a type-variable:
E extends Object declared in interface List
RQ100_70.java:8: warning: [rawtypes] found raw type: List
List nglst2 = nglst1; //(3)
^
missing type arguments for generic class List<E>
where E is a type-variable:
E extends Object declared in interface List
4 warnings
Embora efetivamente um só seja do tipo “unchecked warning”, e ele seja efetivamente na linha (1).