Visualizzazione dei risultati da 1 a 5 su 5

Visualizzazione discussione

  1. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da newutente Visualizza il messaggio
    1) Se io ho dei tipi wrapper vale lo stesso questo discorso?
    Sì, perché entra in gioco l'auto-unboxing (da Java 5).

    Se leggi qui sul JLS: 5.6.2. Binary Numeric Promotion

    vedi che il primo punto è proprio l'unboxing, se necessario. Poi, dopo, il secondo punto è la catena di regole "se uno dei due operandi è un double, l'altro è convertito a double" ecc....

    Quote Originariamente inviata da newutente Visualizza il messaggio
    2) quando è possibile effettuare un casting tra tipi non primitivi?
    Ci sono un po' di regole .... potrei anche cercare di dirtele tutte (ammesso che io riesca a ricordarle tutte ). La cosa importante da tenere a mente è che un cast cambia solo la "visione" del tipo statico del reference che vede il compilatore. Non cambia nulla nell'oggetto referenziato!

    Quote Originariamente inviata da newutente Visualizza il messaggio
    Ad esempio in un esercizio che ho trovato è stato possibile effettuare un cast dal tipo Annotation a Specifica (annotazione creata da me):
    codice:
    Specifica specifica = (Specifica) objectClass3.getAnnotation(Specifica.class);
    ma perchè è stato possibile?
    Qui il cast non serve affatto!

    public <A extends Annotation> A getAnnotation(Class<A> annotationClass)

    L'espressione Specifica.class (un class "literal") ha come tipo Class<Specifica>. Quindi il A è preso dal compilatore come Specifica, che è sicuramente una annotazione (noti che c'è un bound? solo ciò che è-un Annotation. Se Specifica non fosse una annotation, la tua riga non compilerebbe nemmeno!).
    Siccome il tipo di ritorno è A e il compilatore "sa" che è Specifica, allora è tutto type-safe. Non c'è bisogno di cast.
    Ultima modifica di andbin; 06-12-2014 a 11:38
    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.