【问题标题】:Passing ArrayList as generics parameter in Java在Java中将ArrayList作为泛型参数传递
【发布时间】:2013-04-30 12:27:06
【问题描述】:

我有一个ArrayList<String>,我需要传递这个 ArrayList 中的每个字符串,作为这个函数的参数:

protected Void myFunction(String... params)

注意:我无法修改myFunction

【问题讨论】:

  • 参数是String数组,为什么要单独传递String

标签: java generics arraylist


【解决方案1】:

使用toArray 方法将其转换为数组:

myList.toArray(new String[myList.size()]);

【讨论】:

    【解决方案2】:

    1.将其作为单独的字符串传递:

    List<String> list = new ArrayList<String>();
    for(String element:list){
      myFunction(element);
    }
    

    2.传递一个字符串数组。

    myFunction(list.toArray(new String[list.size()]));
    

    【讨论】:

      【解决方案3】:

      将arraylist转换为String数组,然后传递

      instanceName.myFunction(list.toArray(new String[list.size()]));
      

      注意:您不必更改方法的签名。

      检查这个:http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html#toArray()

      【讨论】:

      • 您将拥有 Object[],而不是 String[]。还有另一个 toArray 方法具有更准确的返回类型。
      • 无参数 toArray() 仅返回 Object[]!您需要调用toArray(new String[0])(或者更好的是,提供正确的大小)
      【解决方案4】:

      只需在参数中传递您的 ArrayList,然后在您的方法中使用 foreach 对 ArrayList 进行迭代:

      protected void myFunction(ArrayList<String> myArrayList){
          for(String myParam : myArrayList){
              //do your stuff
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2014-05-04
        • 1970-01-01
        • 2016-04-16
        • 1970-01-01
        • 1970-01-01
        • 2019-02-27
        • 2019-03-05
        • 2012-11-10
        • 1970-01-01
        相关资源
        最近更新 更多