Basa Jawa

Diterbitake ing grup
Dina iki kita bakal ngrembug bab kayata varargs ing Jawa. Varargs - utawa Variabel Argumen - minangka teknologi sing ngidini sampeyan nggawe metode kanthi jumlah argumen sing sewenang-wenang. Ing artikel iki, kita bakal sinau babagan carane nggawe metode kasebut, ngrembug kenapa varargs dibutuhake lan nalika luwih becik digunakake.

Apa varargs?

Varargs minangka argumen dawa variabel: fitur sing muncul ing JDK5. Varargs ngidini kita nggawe metode kanthi jumlah argumen sing sewenang-wenang. Umume, bisa nggawe cara kasebut sadurunge. Bener, nindakake iki ora trep banget. Ayo menehi conto. Contone, kita kudu nulis metode sing bakal njupuk nomer argumen integer sing kasepakatan lan ditambahake. Basa Jawa - 1Kita duwe rong pilihan. Pilihan 1 - kakehan:
class Calculator {
    int sum(int a, int b){...};
    int sum(int a, int b, int c){...};
    int sum(int a, int b, int c, int d){...};
    int sum(int a, int b, int c, int d, int e){...};
}
Nanging ana rong masalah karo overloading. Kaping pisanan, ora mesthi jelas kapan wektune mandheg, lan nomer loro, angel. Arrays luwih apik. Pilihan 2 - array:
class Calculator {
    int sum(int[] numbers){...};
}
Kanthi larik iku ora rumit maneh, lan larik katon kaya apa-apa ... nganti wektune nelpon cara:
public static void main(String... sss) {
    Calculator calculator = new Calculator();

    int[] arguments = new int[7];
    arguments[0] = 1;
    arguments[1] = 10;
    arguments[2] = 123;
    arguments[3] = 234;
    arguments[4] = 6234;
    arguments[5] = 12;
    arguments[6] = 8;

    int sum = calculator.sum(arguments);
}
Kita setuju, sampeyan bisa, mesthi, nulis kabeh luwih ringkes. Nanging sing sepisanan, aku isih pengin nuduhake rasa ora nyaman nggunakake array minangka argumen dawa variabel, lan nomer loro, sanajan kita nulis kaya iki:
int[] arguments = {1,10,123,234,6234,12,8};
int sum = calculator.sum(arguments);
Banjur kita isih ora bakal nyingkirake jumlah kode sing akeh banget. Nanging, kanthi rilis Java 5, fitur Varargs katon kanggo ngatasi masalah kasebut. Iki ngidini kanggo ngirim sawetara argumen sing sewenang-wenang menyang metode. Iku katon kaya iki:
public class Calculator {
    public static void main(String... sss) {
        Calculator calculator = new Calculator();
        int sum = calculator.sum(1,10,123,234,6234,12,8);
    }
    int sum(int... numbers){
       return Arrays.stream(numbers).sum();
    }
}
Dadi, ayo ngringkes. Varargs minangka argumen dawa variabel, fitur sing muncul karo release Java 5. Sabanjure, kita bakal nliti sawetara aturan kanggo nggarap Varargs.

5 aturan varargs

Aturan 1. Argumen Vararg (utawa variabel/argumen dawa arbitrer) dituduhake kanthi elipsis kaya ing ngisor iki:
String... words
Integer... numbers
Person... people
Cat... cats
Aturan 2. Argumentasi kanthi dawa sewenang-wenang mung bisa ditemtokake minangka argumen kanggo sawetara cara:
void print(String... words)
int sum(Integer... numbers)
void save(Person... people)
void feed(Cat... cats)
Aturan 3. Saben argumen variabel-dawa ing awak metode yaiku array:
void print(String... words){
    for (int i = 0; i < words.length; i++) {
        System.out.println(words[i]);
    }
}
Aturan 4. Argumen Vararg kudu sing pungkasan ing dhaptar argumen metode:
void print(String... words, String anotherWord) // - Так нельзя!
void print(String... words, int someNumber) // - Так нельзя!

void print(String anotherWord, String... words) // - Так можно
void print(int someNumber, String... words) // - Так можно
Aturan 5: Sanajan varargs minangka array, nalika nelpon metode sing njupuk argumen dawa variabel, ora perlu nggawe array. Cukup lan malah dikarepake kanggo dhaptar argumen sing dibutuhake sing dipisahake karo koma:
public class Main {
    public static void main(String... sss) {
        print("How","же","прекрасно","изучать","Java");
    }

    static void print(String... words){
        for (int i = 0; i < words.length; i++) {
            System.out.println(words[i]);
        }
    }
}

Tuladha varargs

Ing conto ing ngisor iki, kita bakal nulis cara sing njupuk varargs sing dumadi saka integer lan nampilake jumlah unsur sing dilewati lan jumlahe. Ayo lebokake array lan seri integer menyang metode iki (pilihan loro kasebut sah):
public static void main(String... sss) {
    int[] a = new int[100];
    for (int i = 0; i < a.length; i++) {
        a[i] = i;
    }

    sum(a);
    sum(1,2,3,4,5,6,7,8,9,10);
}

static void sum(int... numbers){
    final int length = numbers.length;
    final int sum = Arrays.stream(numbers).sum();
    final String lineSeparator = System.lineSeparator();

    System.out.printf("Кол-во элементов для сложения - %d, сумма - %d%s", length, sum, lineSeparator);
}
Sawise mbukak program bakal output:

Кол-во элементов для сложения - 100, сумма - 4950 
Кол-во элементов для сложения - 10, сумма - 55 
Perlu dicathet yen metode kasebut System.out.printfuga nampa varargs. Yen kita ndeleng kode metode iki, kita bakal weruh iki:
public PrintStream printf(String format, Object ... args) {
    return format(format, args);
}
Cara liya sing akeh digunakake sing nampa varags yaiku String.format. Kode kasebut ditampilake ing ngisor iki:
public static String format(String format, Object... args) {
    return new Formatter().format(format, args).toString();
}

Nalika nggunakake varargs?

Jawaban kanggo pitakonan iki gumantung marang sing takon. Yen pitakonan sing padha ditakoni dening klien saka sawetara API sing duwe metode karo varargs, banjur jawabane "nggunakake cara kasebut kanthi asring." Kanggo klien kode, varargs nggawe urip luwih gampang kanthi nggawe kode luwih gampang ditulis lan bisa diwaca. Nanging, yen pitakonan iki ditakoni dening pangembang API sing kepingin weruh sepira kerepe sampeyan kudu nggawe metode karo varargs, banjur jawabane "sampeyan ora kudu kerep nggunakake varargs." Varargs mung kudu digunakake nalika entuk manfaat saka nggunakake wis ketok. Sampeyan uga kudu ngindhari cara overloading karo varargs, amarga iki bakal nggawe angel kanggo klien kode sampeyan ngerti endi metode sing kakehan sing diarani.

Kesimpulan

Dadi, kita wis nutupi topik liyane, varargs ing Jawa. We figured metu apa iku. Kita nerangake aturan kanggo nggunakake varargs. Kita ndeleng conto metode kanthi argumen dawa sing sewenang-wenang, lan uga ngrembug nalika luwih becik nggunakake varargs lan nalika luwih becik ora nggunakake. Minangka peer, sampeyan bisa nindakake cara ing ngisor iki:
  • Tulis voidcara sing njupuk seri wilangan bulat lan ngasilake rata-rata aritmetika.
  • Tulis voidcara sing njupuk seri strings lan prints tembung paling dawa.
  • Tulis cara sing ngasilake booleanlan njupuk variabel jinis minangka argumen pisanan String, lan seri booleanvariabel dawa minangka argumen sabanjure.
    Nilai sing bisa ditindakake Stringyaiku AND, OR, XOR. Yen argumen pisanan duwe nilai liyane, metode kasebut kudu mbuwang pengecualian IllegalArgumentException.
    Cara kasebut kudu nindakake operasi logis (ditemtokake ing argumen pisanan) ing saben unsur argumen varargs lan ngasilake asil pitungan.
Conto argumen lan asil:
  • "Lan", bener, bener, salah - bakal bali palsu
  • "UTAWA", salah, bener, salah, salah - bakal bali bener
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION