Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    69

    cosa cambia nel passaggio dei vari parametri int, short, byte?

    codice:
     
    class Pippo
    {
    short a;
    
    Pippo(short a)
    {
     this.a = a;
    }
    }
    Cosa cambia se invece di dichiarare il costruttore come sopra, lo dichiaro come:

    codice:
     
    class Pippo
    {
    short a;
    
    Pippo(int a)
    {
     this.a = (short) a;
    }
    }
    A livello di efficienza di codice è la stessa? Più che altro è che è noioso ogni volta che si richiama il costruttore, eseguire il cast su ogni dato passato:
    pippo( (short) 6 )

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Mah... l'unica differenza è che nel primo caso, hai un controllo a compile-time della correttezza del dato passato, mentre nel secondo no.

    codice:
    int valore = ...;
    Pippo p = new Pippo( valore );
    Nel primo caso non compila:
    cannot find symbol:
    symbol: constructor Pippo(int)
    ...
    Nel secondo caso sì.

    Ma quale sia la semantica corretta, lo sai solo tu. Nel primo caso sei certo che Pippo verrà creato con un valore semanticamente corretto (il compilatore non ammette valori al di fuori del range degli short). Nel secondo caso, chiunque potrebbe istanziare Pippo in questo modo:

    codice:
    Pippo p = new Pippo( 50000 );
    Che comportamento dovrebbe aspettarsi l'utente di Pippo nel secondo caso sapendo che il valore passato verrà troncato, non essendo ammissibile per uno short?

    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

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.