java - 泛型映射键应该只允许两个类并且值一个类
问题描述
使用泛型我想让我的方法参数化以接受键映射(A或B)和值作为模型,然后它转换为映射Map<UUID, Model>
问题是我在entry.getKey().getId()
b/c 上遇到错误。我还没有定义什么是?关键。有人可以帮忙吗?
public void method(Map<?, Model> map) {
Map<UUID, Model> transformation =
map.entrySet().stream()
.collect(
Collectors.toMap(entry -> entry.getKey().getId(), entry -> entry.getValue()));
}
class S {
protected UUID getId() {
// return UUID
}
}
class A extends S {}
class B extends S {}
class Model {
// bla bla
}
解决方案
如果A
并B
实现提供该getId()
方法的通用接口,则将通配符与该方法绑定:
public void method(Map<? extends S, Model> map) {
推荐阅读
- linux - IBM Watson Studio 安装问题卡在“预安装脚本超时,重试”
- php - php - 自动加载不适用于静态方法
- spring-boot - 使用 Spring Security oAuth + Spring Boot 登录后不会重定向到安全页面
- javascript - 在 D3 图表中将 Xaxis 值显示为非时间序列值
- javascript - 同步融合 JS OLAP
- reactjs - React导航:React Invariant Violation:元素类型无效:检查`NavigationContainer`的渲染方法
- java - 如何在两个坐标之间填充二维布尔数组?
- javascript - 使用 Ajax 调用 ValidateClientAuthentication 时,ClientId 为 null
- android - 如何在 Quickblox 的聊天 (QBChatDialog) 中管理用户的个人资料图片
- amazon-web-services - Aws Lambda 列出所有可用的语言运行时