假设我有一个Java控制器类,我想要一个方法,根据该对象的类型将转换应用于List / Collection中的每个对象。转换具有相同的名称,并且重载method references,根据参数类型转换为通用类型。请参阅下面的示例。
public static List<String> convertList(List<? extends Object> list) {
return list.stream().map(POJO::convert).collect(Collectors.toList());
}
public static String convert(POJO p) {
return p.toString();
}
public static String convert(POJO2 p) {
return p.toString();
}
以上给出了错误不兼容的类型:无法推断类型变量R
当然,如果我将方法签名设置为convertList(List<POJO> list)
,它会起作用,但它只适用于其中一个对象类型。我如何使用像反射或延迟转换这样的方法来使一种方法适用于两种转换函数?我无法编辑POJO或POJO2的类定义。