我有方法:
public static <T> Stream<T> stream(JSONArray array) {
return IntStream.range(0, array.length()).mapToObj(i -> {
try {
return (T) array.get(i);
} catch (JSONException e) {
return null;
}
});
}
当我这样称呼它:stream(array).map((JSONObject object) -> { /* ... */ })
时,我得到了错误
无法推断功能接口类型
而且stream<JSONObject>(array).map(object -> { /* ... */ })
不起作用。
stream(array).map(object -> { /* ... */ })
有效,但是object
仅仅是Object
答案 0 :(得分:2)
而且,
stream<JSONObject>(array).map(object -> { /* ... */ })
无效。
那是因为您将类型见证人放置在错误的位置。试试:
TheContainingClass.<JSONObject>stream(array).map(object -> { /* ... */ })
但是您的代码输入不安全:未选中对T
的强制转换。您只需返回一个Stream<JSONObject>
,然后让调用方将类型转换为其他类型即可。