【问题标题】:Java declaring a String array in method invocationJava 在方法调用中声明一个字符串数组
【发布时间】:2013-02-07 00:32:09
【问题描述】:

我正在尝试在方法调用中声明一个字符串数组,如下所示:

if (emailYaml.keySet().containsAll(new String[]{"mailto","subject","text"}))

我不完全确定这是否是最好的方法(我对编程很陌生),但无论如何 Eclipse 告诉我:

The method containsAll(Collection<?>) in the type Set<String> is not applicable for the arguments (String[])

谁能帮忙解决一下?

非常感谢

【问题讨论】:

  • Arrays.asList("mailto","subject","text")

标签: java string methods


【解决方案1】:

包含所有接受的集合。

来自docs

containsAll(Collection<?> c) 

试试这个:

if (emailYaml.keySet().containsAll(Arrays.asList("mailto","subject","text"))

【讨论】:

    【解决方案2】:

    数组不是Collection 的子类型。例如,将其转换为List,然后再将其传递给containsAll

    .containsAll(Arrays.asList(new String[] {"mailto", "subject", "text"}))
    

    甚至更简单,因为asList 将可变参数作为参数:

    .containsAll(Arrays.asList("mailto", "subject", "text"))
    

    【讨论】:

      【解决方案3】:

      containsAll() 需要 Collection 并且您正在传递一个数组,因此您的编译器会抱怨。

      if (emailYaml.keySet().containsAll(Arrays.asList(new String[]
        {"mailto","subject","text"})))
      

      【讨论】:

      • 更简单:if (emailYaml.keySet().containsAll(Arrays.asList("mailto","subject","text")))
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-07
      • 2012-10-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多