我有一个方法执行rest调用并返回传递给方法的类型的对象:
private <T> T getForObject(String url, Class<T> returnClass) throws IOException {...}
在lambda表达式(下面)中使用此方法时,出现编译错误。
List<Object> parentIds = upC.getIds().stream()
.map(cId -> getForObject("/my/url/" + id, WrapperClass.class))
.map(wrapper -> wrapper.getParentId())
.collect(Collectors.toList());
错误:
Wrong 2nd argument type: found 'java.lang.Class<package.WrapperClass>',
required 'java.lang.Class<T>'.
很奇怪,因为我在lambda之外成功使用了这个方法:
getForObject("/other/url/" + objectId, OtherClass.class);
是不是可以在lambda中使用这种类型的方法?