Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2016
    residenza
    Italia, Scomigo (TV)
    Messaggi
    11

    Varargs (Variable arguments)

    Buongiorno a tutti ,

    ho ripreso ,da qualche giorno, lo studio di Java. (Sono un principiante).
    Nell'iniziare lo studio dei VARARGS, mi e' sorto un dubbio nei riguardi di una specifica frase.

    Viene presentata la seguente classe, che dichiara il metodo "somma()":
    codice:
    public class AritmeticaVariabile {
          public void somma(int... interi) {
              //codice complicato. . .
          }
    }
    Come invocare tale metodo? In uno dei seguenti modi:

    codice:
    AritmeticaVariabile ogg = new AritmeticaVariabile();
    ogg.somma();
    ogg.somma(1,2);
    ogg.somma(1,4,40,27,48,27,36,23,45,67,9,54,66,43);
    ogg.somma(1);
    Quindi possiamo passare da "0" a "n" argomenti.
    [FRASE NON CHIARA IN GRASSETTO]
    Si noti che per ogni dichiarazione di metodo, � possibile dichiarare UN SOLO parametro varargs come ULTIMO argomento. Quindi le seguenti dichiarazioni non compilerebbero:

    codice:
    public void somma(int... interi, int altroIntero) {
    // . . .
    }
    . . .
    public void somma(int... interi, int... altriInteri) {
    // . . .
    }
    Sinceramente non ho compreso il significato della frase.
    I parametri varargs nei due esempi sopra sarebbero --> interi, altroIntero e altriInteri?
    Inoltre, gli ultimi due argomenti sarebbero "altroIntero" e "altriInteri"?

    Grazie in anticipo per chi mi aiuter�.
    Ciao.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Sì. Quella frase non mi sembra presentare particolari criticità.
    Un metodo può avere solamente un argomento di tipo varargs (quelli dichiarati con i tre puntini dopo il tipo) e quest'unico argomento di tipo varargs deve obbligatoriamente essere l'ultimo della (eventuale) lista di argomenti.

    codice:
    public void somma(int... numeri);   // OK, ha un solo argomento di tipo varargs ("numeri") ed è, banalmente, anche l'ultimo
    public void somma(int a, int b, int... numeri);   // OK, un solo argomento varargs (numeri) ed è l'ultimo
    public void somma(int... numeri, int a, int b);   // NO: il varargs è messo all'inizio, non si può
    public void somma(int... numeri, int... ancora);   // NO: qui ci sono 2 argomenti di tipo varargs, ce ne può essere solo uno

    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

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,280
    Quote Originariamente inviata da Fedro93 Visualizza il messaggio
    Quindi possiamo passare da "0" a "n" argomenti.
    Sì, per il parametro varargs si possono passare appunto un numero variabile e arbitrario di argomenti, anche 0.
    Nota che il metodo riceve un array per il parametro varargs. L'array è creato di nascosto dal compilatore.

    Quote Originariamente inviata da Fedro93 Visualizza il messaggio
    Si noti che per ogni dichiarazione di metodo, � possibile dichiarare UN SOLO parametro varargs come ULTIMO argomento.
    Queste sono le regole nell'uso dei varargs. Puoi avere 1 solo parametro varargs e questo deve essere per forza l'ultimo dei parametri.

    Non ha senso averne due o più (il compilatore potrebbe non riuscire a capire come suddividere gli argomenti).
    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
    Jan 2016
    residenza
    Italia, Scomigo (TV)
    Messaggi
    11
    Buon pomeriggio,

    Ringrazio entrambe le persone che mi hanno aiutato (LeleFT e anbin).
    Ora l'argomento mi è chiaro.

    Grazie ancora.

Tag per questa discussione

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.