java - 这两个代码有什么区别吗?
问题描述
@Autowired
private StringRedisTemplate stringRedisTemplate;
public void test(String key) {
// IDEA prompts an error
Map<String, String> entries1 = stringRedisTemplate.opsForHash().entries(key);
// This is OK.
HashOperations<String, String, String> opsForHash = stringRedisTemplate.opsForHash();
Map<String, String> entries = opsForHash.entries(key);
}
解决方案
问题是该方法opsForHash()
使用了 2 个泛型,这是签名:
public <HK, HV> HashOperations<K, HK, HV> opsForHash()
如果要使用单行,则需要设置泛型,就像:
Map<String, String> entries1 = stringRedisTemplate.<String, String>opsForHash().entries(key);
在您的代码中,第二种方法有效,因为编译器从运算符左侧的已定义变量中找出泛型=
。
推荐阅读
- python - 我可以在 xlsxwriter 中打开现有工作表吗?
- r - 为什么这个 R 代码给我 1 1 0 而不是 3 0 或 1 0 或 3 1 0?
- html - CSS 网格异常对齐
- r - 替换 RMarkdown bookdown pdf-document 中的图形标题前缀
- javascript - 如何使用 Signal R 和 ASP.Net Core 更新单个项目?
- java - 如何获取 ImageView 值
- python-3.x - 如何让 vscode 显示解释器列表中列出的我的 python venv?
- api - 为什么会出现 Kubernetes api 权限问题?
- spring-boot - 默认 grails 4 应用程序在 application.yml 中有两次唯一名称
- javascript - 我可以让 jQuery .bind mouswheel 更流畅吗?