当前位置: 首页 > 面试题库 >

这里如何推断泛型?

洪伟兆
2023-03-14
问题内容
public static void main(String[] args) {
    Map<String, Map<Long, List<String>>> map = getHashMap();
}

static <K,V> Map<K,V> getHashMap()
{
    return new HashMap<K, V>();
}

我在谷歌番石榴中看到了类似的代码(作为工厂方法)来制作Hashmap的实例而未提及泛型类型。我不明白上述程序是如何推断泛型的;我的意思是getHashMap函数如何理解类型地图,因为我没有将任何类型信息传递给该函数。


问题答案:

getHashMap函数不必推断类型。在调用站点,Java语言规范需要javac来推断类型是否一致(15.12.2.7根据实际参数推断类型参数)。

我相信当前的计划是(仍然)让JDK7支持Diamond运算符,因此new,尽管有些语法似乎毫无意义,但这种事情也可以使用。

Map<String, Map<Long, List<String>>> map = new HashMap<>();
                                                      ^^diamond


 类似资料:
  • 我需要 Kotlin 中的一个集合来仅包含实现给定接口的元素。 例如:包含动物集合的地图: 通过阅读文档、博客和SO问题,我编写了使用Generics in关键字的代码: 现在我想在Test类中添加一个读取“data”内容的方法,例如将其打印到控制台: 如果我这样做,我会遇到编译错误: 我的解决方案是强制我的动物进入一个ArrayList 但是我不确定这是编写这种代码的最好方式。有没有更好的方式告

  • 问题内容: Java通常可以基于参数(甚至与返回类型(例如,与C#相反))来推断泛型。 恰当的例子:我有一个通用类,它只存储一对值,并且可以按以下方式使用: 该方法如下所示: 非常好。但是,这不再适用于以下需要通配符的用例: (请注意显式强制转换以进行正确的类型。) 代码失败,并显示以下错误(由Eclipse提供): 类型不匹配:无法从转换为 但是,显式调用构造函数仍然可以按预期工作: 有人可以解

  • 问题内容: 下面的方法完美无瑕 但是我没有指定此方法中的 是什么。编译器如何将 方法返回的值分配给 未指定类型i 的变量? 我只是测试了答案的有效性,指出了从该方法的返回类型推断出的答案。它似乎没有解决。请检查以下代码。它甚至不编译 再次修改源代码并对其进行测试,结果导致编译时错误 问题答案: 该方法如何推断类型 没有。泛型方法不推断其泛型类型-这就是为什么称为 类型参数 的原因。方法的 调用者

  • 如何将Java7类型推断用于泛型实例创建功能?使用这种新样式有什么好处?

  • 本地机器上的文档结构: 有上面的文档结构, 推送到github时,仅仅推送这些 推送到gitee时,仅仅推送这些 如何写git push ?

  • 问题内容: 我有以下签名的方法: 它读取json字符串,并将其转换为适当类型的对象的列表,例如。整数,字符串等 是否有一种可靠的方法可以通过从参数中推断出参数来将其从方法中删除?例如。有没有办法可以在不丢失功能的情况下将方法签名更改为以下内容? 似乎该解决方案将需要对ParameterizedType进行一些精美的操作。我看了以下内容,但是我使用的方法不正确,或者它们没有达到我的期望: 来自htt