Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    457

    Incompatibilita tra i tipi

    rgazzi secondo voi perche' il compilatore continua a segnalarmi l'errore suli tipi:

    codice:
     if(listaSpecie==null){
              List<SToponimo> list=toponimoService.getAllToponimi();
              // N.B: toponimoService.getAllToponimi() restituisce una lista di stringhe e non una di tipo List<SToponimo>
              //System.out.println(" class list.get(0) = "+list.get(0).getClass());
    
    
              if (list.get(5).getClass()!=String.class){  //qui mi indica incompatibilità..perche'?
                 //String className=list.get(9).getClass().getName();
    
               }

  2. #2
    toponimoService.getAllToponimi() restituisce una lista di stringhe e non una di tipo List<SToponimo>
    Allora perchè non dichiari la Lista di stringhe
    codice:
    List<String>

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Non ha alcun senso assegnare mele a banane.

    L'errore che ottieni è relativo all'assegnazione della lista:

    codice:
    List<SToponimo> list=toponimoService.getAllToponimi();
    Se la getAllToponimi() restituisce una lista di String, allora dovrai assegnare il risultato ad una lista di String. Altrimenti viene sollevato l'errore che hai citato (che non viene segnalato alla riga da te indicata).


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    457
    se io scrivo

    if (list.get(5).getClass()!=String.class){.... }


    la lista secondo me potrebbe essere di qualsiasi tipo,
    io controllo se l'oggetto è di tipo string....
    invece il compilatore si arrabbia e me lo segna come errore..perchè?

    se io ho una lista di stringhe il controllo va a buon fine!!!!!

    si pero' se io ho una lista di oggetti sconosciuti dovrei avere la possibilità di verificare il tipo degli oggetti...come si fa?

  5. #5
    Originariamente inviato da Mitele
    la lista secondo me potrebbe essere di qualsiasi tipo
    Se un metodo restituisce una lista che contiene solo oggetti della classe X
    codice:
    List<X>
    quindi adotta come parametro di tipo il nome di tale classe, allora non hai altra scelta che assegnare tale oggetto ad una lista definita per contenere istanze della classe X.
    Quindi, ad esempio, non puoi assegnare tale lista a List<Y>.

    Originariamente inviato da Mitele
    se io ho una lista di oggetti sconosciuti dovrei avere la possibilità di verificare il tipo degli oggetti...come si fa?
    Devi ricorrere all'uso della RTTI.
    Ecco un esempio:
    codice:
        public static void main(String[] args) {
            java.util.List<Object> listObject = new java.util.ArrayList<Object>();
            listObject.add( "stringa" );
            listObject.add( true );
            listObject.add( 0 );
            listObject.add( "altra stringa" );
            listObject.add( 'v' );
            listObject.add( false );
            listObject.add( 1 );
            listObject.add( 1.5 );
            
            java.util.Map<Class, Integer> map = new java.util.HashMap<Class, Integer>();
            for(Object o : listObject) {
            	Class instanceClass = o.getClass();
            	if( map.get( instanceClass ) == null )
            		map.put( instanceClass, 0 );
            	map.put(instanceClass, map.get(instanceClass) + 1);
            }
            
            System.out.println("Nella lista ci sono:");
            for(Class key : map.keySet())
            	System.out.println(map.get(key) + " istanza/e della classe " + key.getSimpleName() );
        }
    per ogni classe istanziata vengono contate le relative occorrenze all'interno della lista.

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.