Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.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 使用流时未从功能接口获取返回的Obj_Java_Json_Java 8_Java Stream - Fatal编程技术网

Java 使用流时未从功能接口获取返回的Obj

Java 使用流时未从功能接口获取返回的Obj,java,json,java-8,java-stream,Java,Json,Java 8,Java Stream,我使用流API对JSONObject和函数接口的JSONArray进行迭代并执行一些操作: public void getValues(JSONObject obj){ if(obj!=null && obj.containsKey("value")){ JSONArray jsonArray = (JSONArray) obj.get("value");

我使用流API对JSONObject和函数接口的JSONArray进行迭代并执行一些操作:

    public void getValues(JSONObject obj){
        if(obj!=null && obj.containsKey("value")){
            JSONArray jsonArray = (JSONArray) obj.get("value");
        
            if(jsonArray!=null){
                jsonArray.stream().map(getValue).forEach((item) -> {
                    // this item should be of FinalJSONValues obj but here i am getting generic type.
                    item.getAllValues()
                });
            }   
        }
    }
    
    private Function<JSONObject, FinalJSONValues> getValue = (obj) -> {
        FinalJSONValues finalValues = null;
        try {
            finalValues = new FinalJSONValues(obj,this.values);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        return finalValues;
    };
public void getValues(JSONObject obj){
if(obj!=null&&obj.containsKey(“值”)){
JSONArray JSONArray=(JSONArray)obj.get(“值”);
if(jsonArray!=null){
jsonArray.stream().map(getValue).forEach((项)->{
//这个项目应该是FinalJSONValues obj,但这里我得到的是泛型类型。
item.getAllValues()
});
}   
}
}
私有函数getValue=(obj)->{
FinalJSONValues finalValues=null;
试一试{
finalValues=新的FinalJSONValues(obj,this.values);
}捕获(例外e){
抛出新的运行时异常(e);
}
返回最终值;
};
在这段代码中,JSONArray值是流式传输的,函数接口应用于每个返回最终JSONVALUES obj的JSONObject。在流的foreach中,item应该是FinalJSONValues对象,但是我得到了一条警告消息类型安全:方法foreach(Consumer)属于原始类型流。对泛型类型流的引用应参数化
我在这里遗漏了什么吗?

您得到的是什么通用类型?Java8的一些早期版本在lambda泛型的解析方面存在问题。尝试至少安装build 171,而不是最新的Java8版本。您使用的是什么JSON库?所有dang JSON库都有名为
JSONArray
JSONArray
的类型,它们都有不同的方法。我们不必通过搜索所有的API来找出哪些API与您的代码一致。为什么您认为
JSONArray
可以生成
?如果数组包含字符串或数字怎么办?我正在使用org.json.simple库,并收到以下错误消息“类型安全:方法forEach(Consumer)属于原始类型流。对泛型类型流的引用应该参数化”,而不是FinalJSONValues对象@treffnonx保存
getValue
lambda获取一个
对象
,然后在lambda内强制转换到
JSONObject