2014-09-23 26 views
3

我使用的是javax.Json.JsonArray對象。JsonArray.getvaluesAs不帶String.class作爲參數

方法:​​返回JsonArray作爲列表。所以我想要做的是將List變成Set。這是我做的:

Set values= new HashSet(myjsonArray.getValuesAs(null)); 

這工作得很好,但我知道,myjsonArray只包含String。所以我真正想要做的是:

Set<String> values= new HashSet(myjsonArray.getValuesAs(String.class)); 

出於某種原因,上面的代碼我收到編譯器錯誤:

The generic method getValuesAs(Class<T>) of type JsonArray is not applicable for the arguments (Class<String>). The inferred type String is not a valid substitute for the bounded parameter <T extends JsonValue> 

我可以讓我的Set<String>使用循環建立,但我儘量避免,那麼是否有一個簡單的解決上述錯誤?

+0

@aegean嗯試過了,它得到了同樣的錯誤。 – nafas 2014-09-23 09:10:21

+0

如果有人讀過這樣的話:不要使用javax.Json.JsonArray類,它會讓我哭泣... – nafas 2014-09-23 10:25:03

回答

0

很久以前我就用過這個庫了。 從我記得,你只能將一個類傳入從JsonValue擴展的「getValuesAs()」方法。這就是爲什麼字符串不工作。你將不得不嘗試另一種方法。 對不起,我不記得它是哪種方法。

0

正如Nine說: 「getValuesAs()方法僅支持擴展JsonValue班」

這大約是我的工作(和唯一可能)對於這個問題:

private static List<String> toList(JsonArray json){ 
    List<String> list = new ArrayList<String>(); 
    if (json != null){ 
     for (JsonString elm: json.getValuesAs(JsonString.class)){ 
      list.add(elm.getString()); 
     } 
    } 
    return list; 
}