gpt4 book ai didi

java - 通用方法类型参数确定

转载 作者:行者123 更新时间:2023-11-30 11:16:20 24 4
gpt4 key购买 nike

考虑以下简单示例:

public static void main(String[] args) throws FileNotFoundException, IOException {
List<Integer> li = createList();//ok, this mean that ArrayList<Integer> was returned
List<Double> ld = createList();//ok, ArrayList<Double> was returned
}

public static <T> List<T> createList()
{
return new ArrayList<T>();
}

在泛型方法中确定合适的类型参数的算法是什么?如果您提供对 JLS 的引用,那就太好了。

最佳答案

参见 Type Inference . Java 编译器会查看目标类型 以在调用泛型方法时推断类型参数。通常,表达式的目标类型“是 Java 编译器根据表达式出现的位置期望的数据类型”。所以在你的情况下你有:

List<Integer> li = createList();

这里,目标类型是List<Integer> , 通用参数为 Integer .自 createList方法的返回值类型为 List<T> ,编译器可以推断泛型类型参数 T必须是 Integer .您还可以通过使用类型见证使这一点更加明确:

List<Integer> li = MyClass.<Integer>createList();

实际算法非常复杂,JLS 在 section 15.12.2.7 中对其进行了检查.

关于java - 通用方法类型参数确定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24916890/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com