2014-09-23 78 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; 
}