Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: Da Integer ad int

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    643

    Da Integer ad int

    Ciao,
    probabilmente è una domanda banalissima:

    Se io ho un oggetto integer come faccio a "convertirlo" ad int (il cast dice che non va bene).

    Integer dovrebbe essere un oggetto di tipo wrapper, quindi al suo interno dovrebbe contenere un int

    Se io ad esempio ho qualcosa come:

    una variabili di tipo int: int oldPriority;
    e: oldPriorityMap.get(tipoProcesso); che però mi restituisce un Integer

    se faccio:

    codice:
    int oldPriority = oldPriorityMap.get(tipoProcesso);
    mi dà errore perchè ovviamente provo a mettere il riferimento ad un oggetto in un tipo primitivo, come faccio ad estrarre tale valore dall'oggetto integer?

    Tnx

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    La classe Integer ha il metodo intValue().
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    643
    Originariamente inviato da Alex'87
    La classe Integer ha il metodo intValue().
    Si, in realtà avevo provato e mi ero dimenticato di scriverlo.

    Il problema è che se faccio:

    codice:
    oldPriority = oldPriorityMap.get(tipoProcesso).intValue();
    In Eclipse mi appare il segnetto di errore e mi dice: "The method intValue() is undefined for the type Object"

    Che poi non capisco perchè me lo consideri un Object visto che se gli faccio stampare:
    codice:
     System.out.println("CLASSE: " + oldPriorityMap.get(tipoProcesso).getClass());
    Mi risponde: CLASSE: class java.lang.Integer

    why? Qualche idea?

    Tnx

  4. #4

    Re: Da Integer ad int

    Originariamente inviato da D4rkAng3l
    codice:
    int oldPriority = oldPriorityMap.get(tipoProcesso);
    mi dà errore perchè ovviamente provo a mettere il riferimento ad un oggetto in un tipo primitivo, come faccio ad estrarre tale valore dall'oggetto integer?
    Quella istruzione non da errore in fase di compilazione, in quanto viene eseguito l'unboxing dell'oggetto Integer restituito, sempre se i valori di oldPriority sono effettivamente istanze della classe Integer.

    Di sicuro l'errore lo ottieni in fase di esecuzione nel caso in cui oldPriorityMap non contiene la chiave tipoProcesso.
    Qundi, potresti optare per un assegnamento "più sicuro"
    codice:
    Integer oldPriority = oldPriorityMap.get(tipoProcesso);
    ed in seguito verificare che oldPriority non punti a null.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    643
    Ok risolto da me, problema di priorità di operatore, così dovrebbe andr bene:

    codice:
    oldPriority = ((Integer) oldPriorityMap.get(tipoProcesso)).intValue();

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326

    Re: Re: Da Integer ad int

    Originariamente inviato da VincenzoTheBest
    Quella istruzione non da errore in fase di compilazione, in quanto viene eseguito l'unboxing dell'oggetto Integer restituito, sempre se i valori di oldPriority sono effettivamente istanze della classe Integer.
    Stai dando per scontato che stia usando una versione di Java dalla 5 in avanti...

    Mi pare di capire che così non è.
    Per le versioni precedenti alla 5, infatti, è necessario un cast esplicito, non essendovi i Generics, quindi niente collezioni tipizzate...


    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

  7. #7

    Re: Re: Re: Da Integer ad int

    Originariamente inviato da LeleFT
    Stai dando per scontato che stia usando una versione di Java dalla 5 in avanti...
    Come si fa a non darlo per scontato?

    La versione 5 venne pubblicata il 29 settembre 2004 ..

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326

    Re: Re: Re: Re: Da Integer ad int

    Originariamente inviato da VincenzoTheBest
    Come si fa a non darlo per scontato?

    La versione 5 venne pubblicata il 29 settembre 2004 ..
    Eh... io ho continuato fino a metà dell'anno scorso ad usare la 1.4.2.
    E i programmi scritti con quella versione, sono tutt'ora manutenuti e compilati con quella versione...


    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

  9. #9

    Re: Re: Re: Re: Re: Da Integer ad int

    Originariamente inviato da LeleFT
    Eh... io ho continuato fino a metà dell'anno scorso ad usare la 1.4.2.
    E i programmi scritti con quella versione, sono tutt'ora manutenuti e compilati con quella versione...
    Su questo non c'è dubbio.

    Però è comunque ipotizzabile che D4rkAng3l utilizzi una versione >= 5 e non abbia usufruito delle Generics..

  10. #10
    Originariamente inviato da D4rkAng3l
    Ok risolto da me, problema di priorità di operatore, così dovrebbe andr bene:

    codice:
    oldPriority = ((Integer) oldPriorityMap.get(tipoProcesso)).intValue();
    Probabilmente ti tocca fare in quel modo perchè avrai utilizzato oldpriorityMap di tipo nonsochèMAP senza utilizzare le generics e quindi dando per scontato che ci inserisci dentro degli object o delle sottoclassi di object.

    Questo significa che l'inserimento lo fai senza preoccupartene minimamente perchè tutte le classi sono sottoclassi di object mentre quando utilizzi il metodo get ciò che ti viene restituito è un object e prima devi appunto effettuare un cast.
    Poi ovviamente sull'oggetto istanza di Integer hai il metodo "intValue()" ed è per questo che devi poszionare in quel modo le parentesi.

    Se capisci bene la teoria che c'è sotto eviti poi di impazzire su queste cose.
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

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.