2013-02-21 56 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