Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JsonArray.getvaluesAs不';t将String.class作为参数_Java_Json_Arrays - Fatal编程技术网

Java JsonArray.getvaluesAs不';t将String.class作为参数

Java JsonArray.getvaluesAs不';t将String.class作为参数,java,json,arrays,Java,Json,Arrays,我使用的是javax.Json.JsonArray对象 方法:javax.Json.JsonArray.getvaluesAs(Class)将JsonArray作为列表返回。所以我想做的是将列表放入集合。我就是这么做的: Set values= new HashSet(myjsonArray.getValuesAs(null)); 这很好,但我知道myjsonArray只包含String。所以我真正想做的是: Set<String> values= new HashSet(myjs

我使用的是
javax.Json.JsonArray
对象

方法:
javax.Json.JsonArray.getvaluesAs(Class)
JsonArray
作为列表返回。所以我想做的是将
列表
放入
集合
。我就是这么做的:

Set values= new HashSet(myjsonArray.getValuesAs(null));
这很好,但我知道
myjsonArray
只包含
String
。所以我真正想做的是:

Set<String> values= new HashSet(myjsonArray.getValuesAs(String.class));
Set values=newhashset(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>
JsonArray类型的泛型方法getValuesAs(类)不适用于参数(类)。推断的类型字符串不是有界参数的有效替代品
我可以使用循环来构建我的
集合,但我尽量避免这种情况,所以有没有简单的方法来修复上述错误?

我很久以前就使用过这个库。 根据我的记忆,您只能将一个类传递到从JsonValue扩展而来的“getValuesAs()”方法中。这就是为什么字符串不起作用。你必须尝试另一种方法。 抱歉,我记不清它是哪个方法。

getValuesAs()方法只支持扩展JsonValue的类。在本例中,您可以使用JsonString.class,然后它将简单地强制转换为字符串

检查这个()可以看到T扩展了JsonValue,正如前面所说的“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;
}
private静态列表列表(JsonArray-json){
列表=新的ArrayList();
if(json!=null){
for(JsonString-elm:json.getValuesAs(JsonString.class)){
add(elm.getString());
}
}
退货清单;
}

@aegean-Hmm尝试了一下,它得到了相同的错误。如果有人读到这篇文章:不要使用javax.Json.JsonArray类,它会让我哭泣。。。