Как сделать метод, который принимает любое количество аргументов любого типа в Java? - PullRequest
5 голосов
/ 20 февраля 2012

Я вижу, что в Java есть способ, который принимает любое количество аргументов указанного типа: http://www.java -tips.org / Java-с-советы / java.lang / как к миновать-энный-номер-аргументы-к-а-m.html

но есть ли способ создать метод, который принимает любое количество аргументов любого типа?

Ответы [ 4 ]

9 голосов
/ 20 февраля 2012

Все объекты Java расширяют класс Object. Таким образом, вы можете заставить вашу функцию принимать массив объектов:

public void func(Object[] args) {
}

Или, если вы хотите иметь возможность ничего не передавать:

public void func(Object... args) {
}
5 голосов
/ 20 февраля 2012
public void omnivore(Object... args) {
   // what now?
}

В Java переменная любого ссылочного типа (объекты и массивы), включая переменные некоторого универсального типа, даже групповые символы, может быть передана параметру типа Object. Переменная любого примитивного типа может быть автоматически помещена в соответствующий ей тип оболочки, который является ссылочным типом, и поэтому может быть передан как Object. Итак, Object... примет любое количество чего угодно.

3 голосов
/ 20 февраля 2012

Используйте этот синтаксис:

void myMethod(Object... args) {
    // Here, args is an array of java.lang.Object:
    // you can take its length, get its elements with [i] operator,
    // and so on.
}
1 голос
/ 20 февраля 2012

Ближайшее, что вы получите, это someMethod(Object ... args).

Строго говоря, это не принимает все типы аргументов.В частности, он не принимает примитивные типы: они должны быть упакованы в соответствующие типы обертки.Обычно это не имеет значения.Но это так, если вам нужно различать примитивный и упаковочный типы в вызываемом методе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...