Às vezes coloco listas de objetos na sessão do usuário e posteriormente recupero essas listas para realizar certas operações. Até ai, tudo bem. O que está me deixando incomodado é que não consigo fazer o cast ou usar os recursos da API de Generics para que o Eclipse pare de dar warnings do tipo "Type safety: Unchecked cast from Object to List<Blabla>.
Mas não sei qual a maneira certa para não receber esses warnings. Tudo funciona belezinha, mas tá na cara que da maneira como venho fazendo está errado…
Para parar o warning, você usa @SuppressWarnings, mas põe um comentário, é óbvio.
importjava.util.*;classBlaBlaBla{}classSession{// Note que como ele retorna um Object não há como o compilador saber// que ele vai retornar um ArrayList<BlaBlaBla> - imagine se você// usar uma subclasse:publicObjectgetAttribute(){returnnewArrayList<BlaBlaBla>();}}classMySessionextendsSession{publicObjectgetAttribute(){returnsuper.getAttribute();}}classTesteSessionGetAttribute{publicstaticvoidmain(String[]args){Sessionsession=newMySession();// "Gambiarra detector activated"....@SuppressWarnings("unchecked")List<BlaBlaBla>blaList=(List<BlaBlaBla>)session.getAttribute();}}
C
cassio
thingol:
Para parar o warning, você usa @SuppressWarnings, mas põe um comentário, é óbvio.
importjava.util.*;classBlaBlaBla{}classSession{// Note que como ele retorna um Object não há como o compilador saber// que ele vai retornar um ArrayList<BlaBlaBla> - imagine se você// usar uma subclasse:publicObjectgetAttribute(){returnnewArrayList<BlaBlaBla>();}}classMySessionextendsSession{publicObjectgetAttribute(){returnsuper.getAttribute();}}classTesteSessionGetAttribute{publicstaticvoidmain(String[]args){Sessionsession=newMySession();// "Gambiarra detector activated"....@SuppressWarnings("unchecked")List<BlaBlaBla>blaList=(List<BlaBlaBla>)session.getAttribute();}}
Eu já uso o SuppressWarnings("unchecked"), mas achei que talvez houvesse uma maneira certa de fazer o cast. Realmente, pensando bem não tem como mesmo, pois estou retornando um tipo a partir de sua interface e não da implementação, certo?
Valeu Thingol!
T
thingol
Se em vez de usar a classe Session você usasse outra coisa, provavelmente não teria esse problema. Vou dar um exemplo: