Java单类定义多个泛型 如何将方法泛型R改为类泛型替换UserDBResource
修改后完整代码
class ReadFunction<T, R extends DBResource> { private final Function<R, T> function; public ReadFunction(final Function<R, T> function) { this.function = function; } public T readValue(final R resource) { return Util.supplyOrNull(() -> this.function.apply(resource)); } }
核心修改点
- 类声明新增泛型参数
R extends DBResource,替换所有原代码中硬编码的UserDBResource类型 - 成员变量
function的入参类型、构造方法的入参函数类型同步调整为泛型R - 删除
readValue方法上单独声明的方法级泛型<R extends DBResource>,直接复用类层级的泛型定义 - 修复了原代码中
readValue方法内缺失右括号的语法问题
使用示例
// 实例化时指定R为UserDBResource即可兼容原有逻辑 ReadFunction<String, UserDBResource> userReadFunc = new ReadFunction<>(UserDBResource::getUserName); // 调用时传入对应类型的资源实例 String userName = userReadFunc.readValue(userDBResourceInstance);
内容的提问来源于stack exchange,提问作者hello2244
相关产品推荐
相关产品推荐

