Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    50

    alcuni warnings di compilazione

    Cari, di seguito alcuni warnings di compilazione che vorrei risolvere (segue prima la porzione di codice a cui si riferisce):

    - List <Comparable> keys = dataset.getKeys();
    Comparable is a raw type. References to generic type Comparable<T> should be parameterized

    -Enumeration e = zf.entries();
    Enumeration is a raw type. References to generic type Enumeration<E> should be parameterized

    -List <Comparable> keys = dataset.getKeys();
    Type safety: The expression of type List needs unchecked conversion to conform to List<Comparable>


    Seguendo il suggerimento che mi fornisce eclipse, ne saltano fuori altri.

    Come posso fare?

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

    Re: alcuni warnings di compilazione

    Originariamente inviato da frapal
    Come posso fare?
    Basta usare in modo coerente e consistente i "generics". Altrimenti mix di raw-type e parameterized-type portano principalmente a dei warning, nonché possibili problemi a run-time se non hai fatto le cose in modo corretto.

    Dovresti precisare come sono dichiarati 'dataset' e 'zf' o comunque cosa contengono.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    50
    dataset è istanza di PieDataset, mentre zf è istanza di ZipFile.

    Come dovrei dunque agire?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da frapal
    dataset è istanza di PieDataset
    PieDataset non so cosa sia e di quale API sia ....

    Originariamente inviato da frapal
    zf è istanza di ZipFile.
    Enumeration<? extends ZipEntry> entries = zf.entries();
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    50
    PieDataset appartiene alle API di JFreeChart.
    Se non chiedo molto,potresti spiegarmi cosa significhi precisamente Enumeration<? extends ZipEntry>?


    Grazie

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da frapal
    PieDataset appartiene alle API di JFreeChart.
    Stando al javadoc, PieDataset non è una classe "generica" (e in generale se non sbaglio JFreeChart non usa i generics).
    Il getKeys() ritorna il "raw-type" List. Quindi potresti continuare ad usare questo List come raw-type e se devi solo estrarre chiaramente fai il cast al tipo esatto (ma non avrai warning, che invece hai se tentassi di aggiungere qualcosa).

    Oppure fare un cast del List ad un List<TuoTipo>. Il cast è unchecked quindi un warning comunque lo avresti ma poi in seguito non avresti problemi.

    Originariamente inviato da frapal
    cosa significhi precisamente Enumeration<? extends ZipEntry>?
    Il '?' è un "wildcard" e in questo caso si dice che ha un "bound" (limite). Quindi è un "bounded wildcard".

    Faccio l'esempio più semplice con una collezione e con Number. Se avessi:

    ArrayList<? extends Number> arr;

    non vuol dire che la collezione può contenere "qualunque" oggetto che estende Number. No, questa tipizzazione la avresti semplicemente con ArrayList<Number> che è una collezione che può contenere oggetti es. Integer, Double, Byte, ecc... anche in modo "eterogeneo".

    Il ? quindi non fa riferimento al contenuto ma proprio alla tipizzazione. Cioè tu non sai come è tipizzata la collezione. Ad 'arr' si potrebbe assegnare un ArrayList<Integer> o un ArrayList<Byte> o un ArrayList<Double>. Ma tu solo da 'arr' non lo "sai" quale è, sai solo per certo che la collezione ha una tipizzazione che è Number o sottotipo. Non ci puoi assegnare un ArrayList<String> o un ArrayList<Date>, tanto per dire.
    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.