Java: отправка нескольких параметров в метод

Вот мой сценарий:

Мне нужно вызвать метод. Пусть параметры: Параметр1, Параметр2,..,.., Параметр N Но параметры, которые нужно отправить методу, могут меняться в каждом случае.

Случай 1: Отправляется только параметр1

Случай 2: Отправляется комбинация параметров

Случай 3: Все параметры отправляются

Каков наилучший способ достичь этого в Java?

Ответ 1

Решение зависит от ответа на вопрос - все ли параметры будут одного и того же типа, и если это будет каждый из них обрабатываться одинаково?

Если параметры не одного и того же типа или, что более важно, не будут обрабатываться одинаково, тогда вы должны использовать перегрузку метода:

public class MyClass
{
  public void doSomething(int i) 
  {
    ...
  }

  public void doSomething(int i, String s) 
  {
    ...
  }

  public void doSomething(int i, String s, boolean b) 
  {
    ...
  }
}

Если, однако, каждый параметр является одним и тем же типом и будет обрабатываться одинаково, то вы можете использовать функцию переменных args в Java:

public MyClass 
{
  public void doSomething(int... integers)
  {
    for (int i : integers) 
    {
      ...
    }
  }
}

Очевидно, что при использовании переменных args вы можете получить доступ к каждому аргументу по его индексу, но я бы посоветовал это сделать, поскольку в большинстве случаев он намекает на проблему в вашем дизайне. Аналогичным образом, если вы обнаружите, что выполняете проверки типов при повторении аргументов, ваш дизайн нуждается в обзоре.

Ответ 2

Предположим, что у вас есть метод void, который печатает много объектов;

public static void print( Object... values){
   for(Object c : values){
      System.out.println(c);
   }
}

В приведенном выше примере я использовал vararge как аргумент, который принимает значения от 0 до N.

Из комментариев: что, если 2 строки и 5 целых чисел?

Ответ:

print("string1","string2",1,2,3,4,5);