Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    27

    [JAVA] warning su Vector clone()

    Dunque, compilando il programma con javac -Xlint (come suggerito dal compilatore stesso) mi viene dato un warning su di una chiamata a clone su di un vector, il codice e' questo :

    Vector<downObj> oldList = (Vector<downObj>)listaObj.clone();

    (listaObj è un altro Vector<downObj>)

    il warning e' questo :

    warning: [unchecked] unchecked cast
    found : java.lang.Object
    required: java.util.Vector<downObj>

    Ora, il cast che ho fatto io non va bene? forse il problema dipende dal fatto che gli elementi del vettore sono altri oggetti, come risolvere quindi? (premesso che tutto funziona bene ora cmq... cè solo questo warning che vorrei comprendere)

    grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    27
    nessuna idea?

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA] warning su Vector clone()

    Originariamente inviato da TM-Nite
    Vector<downObj> oldList = (Vector<downObj>)listaObj.clone();

    warning: [unchecked] unchecked cast
    found : java.lang.Object
    required: java.util.Vector<downObj>
    Il warning è corretto. Sai cosa è la "erasure"? È la tecnica con cui i generics sono implementati. A runtime non c'è alcun modo di sapere se l'oggetto è un Vector<String>, Vector<Integer> o Vector<QuelloCheTiPare>. I tipi parametrici vengono usati solo per effettuare il type checking a livello di compilazione ma nel bytecode vengono eliminati. Non c'è alcuna informazione, ad esempio nel Vector, che dice che gli elementi sono di un certo tipo. A runtime è solamente un "Vector" e basta.

    Il warning ti dice semplicemente: "guarda che non posso controllare esattamente se il cast è corretto". C'è solo la possibilità di "sopprimere" il warning con una apposita annotazione SuppressWarnings:

    codice:
    @SuppressWarnings("unchecked")
    Vector<downObj> oldList = (Vector<downObj>)listaObj.clone();

    P.S. consiglio: approfondisci meglio i generics...
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.