2013-02-21 63 views
1

我想声明的方法调用中一个String数组,像这样:Java的声明在方法调用一个String数组

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[]) 

任何人都可以帮助解决?

非常感谢

+0

'Arrays.asList( “电子邮件地址”,“主题“),”text“)' – entonio 2013-02-21 15:48:38

回答

4

一个数组不是子类型Collection。将其转换为List例如,将它传递给containsAll前:

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

甚至simplier,因为asList需要一个可变参数的参数:

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

太棒了 - 非常感谢 – 2013-02-21 16:13:23

0

包含所有接受集合。

docs

containsAll(Collection<?> c) 

试试这个INSEAD:

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

感谢您的回答 – 2013-02-21 16:14:56

0

containsAll()需要一个Collection和你逝去的数组,因此编译器抱怨。

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

更容易:if(emailYaml.keySet()。containsAll(Arrays.asList(”mailto“,”subject“,”text“)))' – jlordo 2013-02-21 15:53:46

+0

agree ...... .............. :) – PermGenError 2013-02-21 15:54:36

+0

太好了,谢谢你 – 2013-02-21 16:13:40