Amigos, estou instanciando algumas classes por reflexão no Tiger e ele dá um warning no seguinte trecho:
Class c = Class.forName("br.com.teste.MinhaClasse");
desktopPane.add((Component) c.newInstance());
o Warn é este:
Type safety: The method newInstance() belongs to the raw type Class. References to generic type Class<T> should be parameterized
Já tentei de várias formas e não consegui contornar este caso. Alguém pode dar uma maõzinha?
PS. o código acima está funcionando normalmente sem exceptions!
[]´s
Tem dois jeitos de tirar o seu warning.
Um deles é escrever:
Class< ? > c = Class.forName( ... o resto é igual
O outro é mais complicado. Se você sabe que a tal MinhaClasse tem de ser sempre um Component, você pode usar:
Class<? extends Component > c = Class.forName("br.com.teste.MinhaClasse").asSubclass(Component.class);
desktopPane.add (c.newInstance());
Você viu que adicionei uma chamada a “asSubclass” para retornar um Class que deve se referir a alguma classe que é derivada de Component.
Além disso, você viu que agora não preciso usar o cast para c.newInstance.
Veja o que é melhor para você.
P.S. Se eu não estivesse com o JDK 5.0 disponível nem me animava a responder. Tive de fazer um programa-teste só para ver o que compilava OK.
Acho que vou pedir para mudarem o meu nick, já é a 10a. vez que me chamam de Tiago …
Qual você usou? A mais simples (Class <?>) ou a mais complicada?
A 2ª opção, pois conheço quais são as subclasses :lol:

Legal, na verdade essa nova declaração da classe Class foi pensada para que o “newInstance” e outros métodos não necessitassem mais de casts. Não sei se eles não deveriam ter posto um exemplo no javadoc…