Visualizzazione dei risultati da 1 a 4 su 4

Discussione: problema toarray

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    4

    problema toarray

    salve ho un problemone.
    ho creato l'interfaccia e la classe astratta e non ho nessun errore di compilazione. compilando invece la classe concreta ho 1 errore.


    import java.util.*;

    public class InsiemeHS <T extends Object & Comparable<? super T>> extends InsiemeAstratto<T>{
    public InsiemeHS(){}
    public InsiemeHS(Insieme<T> i){
    T[]el=i.elementi();
    for (int j=0; j<el.length; j++)
    this.aggiungi(el[j]);
    }
    public Set<T>c=new HashSet<T>();
    public Iterator<T> iterator(){
    return c.iterator();}

    public boolean vuoto(){
    return c.isEmpty();}

    public boolean pieno(){return false;}

    public boolean aggiungi( T x ){
    return c.add(x);
    }


    public boolean rimuovi( T x ){
    return c.remove(x);}

    public Insieme<T> creaInsieme(){ return new InsiemeHS<T>();}

    public boolean appartiene( T x ){
    return c.contains(x);}


    public boolean sottinsieme( Insieme<T> y ){
    T[]el=y.elementi();
    int wua=0; int cla=0; boolean sa=true;
    for(int j=0;j<el.length;j++) wua++;
    for (int j=0;j<el.length && sa;j++){ if(y.appartiene(el[j]))
    sa=true; cla++;}
    if (cla==wua) return true;
    else return false;
    }



    public T[] elementi(){
    return c.toArray();
    }}
    //InsiemeHS





    l'errore me lo dà proprio il metodo toArray. so che è sbagliato perchè è ritornato un array di object..ma se faccio il casting a T ho 1 altro errore ugualmente.mi aiutate?grazie ciao.

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    codice:
    public T[] elementi(){
       T[] result = new T[c.size()];
       return c.toArray(result);
    }

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da simo7784
    codice:
    public T[] elementi(){
       T[] result = new T[c.size()];
       return c.toArray(result);
    }
    generic array creation

    Il problema è più serio. Il tipo T è un tipo non reifiable ed è possibile creare array solo di tipi reifiable.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    generic array creation
    Vero. M'era completamente passato di mente ed ho postato il codice senza provarlo.
    Il problema è più serio.
    In effetti i generics applicati agli array sono una brutta bestia (anche le Collection create dai programmatori della Sun non riecono ad aggirare il problema, visto che toArray restituisce un Object[] invece che un T[] anche quando sono tipizzate).
    O restituisci un Object[], oppure provi a prendere in considerazione una strada alternativa, come restituire un iteratore oppure un'astrazione di array tipo List<T>.
    codice:
    public Iterator<T> elementi(){
            return c.iterator();
    }
    codice:
    public static void main(String[] args) {
       InsiemeHS <String> t = new InsiemeHS<String>();
       t.aggiungi("simo");
       t.aggiungi("qwerty");
       Iterator<String> a = t.elementi();
       while(a.hasNext()) System.out.println(a.next());
    }

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 © 2026 vBulletin Solutions, Inc. All rights reserved.