О Varargs, могу ли я повторить аргументы в группе?Varargs в группе?
Например, я хочу, чтобы позволить пользователям проходить в:
myFunc(1, "one");
myFunc(1, "one", 2, "two");
myFunc(1, "one", 2, "two", 3, "three");
Это кажется невозможным. Но, как упоминалось в docs, varargs на самом деле является массивом в старой реализации. Я хотел был бы знать как был людей делают до varargs изобретатель. Это может вдохновить нас на то, как достичь вышеуказанного сценария. Мы можем рассматривать мой сценарий как {int, String}...
, повторяющий afterall.
Спасибо за любой вход :-)
Edit:
Спасибо за все ваши входы!
Таким образом, он звонит myFunc(new wrap(1, "one"), new wrap(2, "two"), new wrap(3, "three"));
является старый метод?
Редакция 2:
Ну, нет. Это моя ошибка беспорядка.
Для
myFunc(1);
myFunc(1, 2);
myFunc(1, 2, 3);
старый путь должен быть
myFunc(new int[]{1});
myFunc(new int[]{1, 2});
myFunc(new int[]{1, 2, 3});
Насколько я могу видеть, как повторяющиеся аргументы образуют в массив. Все его аргументы должны быть одного типа. Невозможно достичь вышеуказанных вызовов простым способом. Для любопытства я начинаю думать о возможности перегрузки оператора ... (?)
Спасибо @NilsH. Однако при использовании пользователи должны делать «myFunc» (новая пара (1, «одна»), новая пара (2, «два»), новая пара (3, «три»), ', разве это? сокращенно? Или используйте более удобным способом? – midnite
Да, вам нужно было бы это сделать. Если вы этого не хотите, вам придется использовать «Object ...», а затем проверить и отбросить аргументы внутри вашего метода Но это откроет для неправильного использования вашего метода, поэтому я бы не рекомендовал это делать. – NilsH
yup действительно и с помощью 'Object ...' не может защитить число аргументов, чтобы быть четным, правильно? – midnite