java - Java 泛型函数返回声明
问题描述
我是 Java 泛型的新手,并且已经设法让一个getKeyByValue
函数与 a 一起使用HashMap<String, String>
,但我不明白函数声明如何模棱两可/冗余并且仍然有效。例如,这两个声明都有效,但第一个对我来说没有多大意义:
private <T, E> String getKeyByValue(Map<String, E> map, String value) {
for (Entry<String, E> entry : map.entrySet()) {
if (value.equals(entry.getValue())) {
return entry.getKey();
}
}
return null;
}
示例<E>
:
private <E> String getKeyByValue(Map<String, E> map, String value) {
for (Entry<String, E> entry : map.entrySet()) {
if (value.equals(entry.getValue())) {
return entry.getKey();
}
}
return null;
}
解决方案
您的第一个示例只是声明从未使用过的类型参数 - 您可以声明任意数量的参数!
private <T, E, F, G> String getKeyByValue(Map<String, E> map, String value) {
for (Entry<String, E> entry : map.entrySet()) {
if (value.equals(entry.getValue())) {
return entry.getKey();
}
}
return null;
}
推荐阅读
- c# - Visual Studio 2017 找不到解决方案中存在的文件夹
- css - SVG 边框图像在 Chrome 上完美,在 Firefox 上拉伸
- python - Pandas corr() 过于频繁地返回 NaN
- php - PHP Wordpress 将 XML 导出到自定义网站
- vuejs2 - 在 beforeEnter 路由中访问 VuexStore
- reactjs - 尝试在 React 中动态选择组件
- r - 在 R 中运行 HLM 中介
- git - 试图将我的头脑围绕在 PowerShell 上——函数、别名等
- angular - 实现双向数据绑定的问题
- svg - Graphviz -> svg (->pdf) 文本对于某些查看者来说是开箱即用的