Как передать аргумент String в параметр ArrayList - PullRequest
1 голос
/ 18 февраля 2011

Я пытаюсь передать аргумент String параметру ArrayList следующим образом:

Class A {
 public void testA (ArrayList arrayInput) {
      // Implement function
      System.out.println("In testA function");
   }
  String a = "new";
  testA(a);
}

Я делаю это потому, что хочу использовать одну и ту же функцию для передачи значений String и ArrayList. Есть ли работа вокруг?

Спасибо, Sony

Ответы [ 3 ]

4 голосов
/ 18 февраля 2011
// Option 1: print in String - preferred
public void testA(ArrayList<String> list) {
    for(String str : list) testA(str);
}

public void testA(String s) {
    System.out.println(s);
}



// Option2: print in List - not so preferred
public void testA(ArrayList<String> list) {
    for(String str : list) System.out.println(str);
}

public void testA(String s) {
    ArrayList<String> list = new ArrayList<String>();
    list.add(s);
    testA(list);
}
2 голосов
/ 18 февраля 2011

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

    Class A {
     public void testA (ArrayList arrayInput) {
          // Implement function
          System.out.println("In testA function");
       }
     public void testA (String stringInput) {
          // Implement function
          System.out.println("In testA function. For String!");
       }
      String a = "new";
      testA(a);
    }

Или вы можете написать функцию с помощью generic:

public void testA<T>(T input){...}
1 голос
/ 18 февраля 2011

Вы можете написать перегруженные методы, как предлагали другие пользователи.

В качестве альтернативы вы можете просто обернуть объект String в List и передать его в testA, как показано ниже:

public static <A> void testA(List<A> list) {
  // some code that works over list
  System.out.println("In testA method");
}

String a = "new";
testA(Arrays.asList(a));
...