В Java методы могут иметь список аргументов переменной длинны. Это удобно, когда нужно передать аргументы одного типа если количество их не известно или будет меняться во время выполнения программы. Это могут быть как примитивные типы данных так и объекты. Здесь можно использовать два подхода: один устаревший - использовать массив параметров, второй новый - использовать специальную конструкцию: (тип ... переменная)
//передача списка аргументов переменной длины через массив (старый подход) private void MethodWithDifferentArguments1(int[] v){ StringBuffer sbuf = new StringBuffer();
//обработка в цикле for(int i = 0; i < v.length; i ++) sbuf.append(v[i]); JOptionPane.showMessageDialog(null, sbuf); }
//передача списка аргументов переменной длины через массив (старый подход) private void MethodWithDifferentArguments2(int[] v){ StringBuffer sbuf = new StringBuffer();
//обработка в стиле foreach for(int x: v) sbuf.append(x); JOptionPane.showMessageDialog(null, sbuf); }
//передача списка аргументов переменной длины через массив (новый подход) private void MethodWithDifferentArguments3(int ... v){ StringBuffer sbuf = new StringBuffer();
//обработка в цикле for(int i = 0; i < v.length; i ++) sbuf.append(v[i]); JOptionPane.showMessageDialog(null, sbuf); }
//передача списка аргументов переменной длины через массив (новый подход) private void MethodWithDifferentArguments4(int ... v){ StringBuffer sbuf = new StringBuffer();
//обработка в стиле foreach for(int x: v) sbuf.append(x); JOptionPane.showMessageDialog(null, sbuf); }
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { int[] arr1 = {1, 2, 3, 4, 5}; int arr2[] = {3, 2, 1}; int[] arr3 = new int[5]; arr3[0] = 1; arr3[1] = 7; arr3[2] = 1; arr3[3] = 8; arr3[4] = 1; int[] arr4 = {6, 7, 8, 9};
MethodWithDifferentArguments1(arr1); MethodWithDifferentArguments2(arr2); MethodWithDifferentArguments3(arr3); MethodWithDifferentArguments3(arr4); }
Одновременно с параметром с переменным числом аргументов (конструкция (тип ... переменная)) метод может принимать и любые другие параметры, но эта конструкция должна идти последней в списке аргументов и быть единственной. Например:
private void MethodWithManyParameters(String s, double d, short[] sh, int ... v){ }
|