gpt4 book ai didi

Java 8 和广义目标类型推断

转载 作者:IT老高 更新时间:2023-10-28 20:52:10 26 4
gpt4 key购买 nike

我已经安装了最新的 JDK 8 ea b114 来测试新的语言功能。然而,链式调用中的推理似乎还不起作用。

如果我写:

Iterator<String> it = new ArrayList<>().iterator();

编译器给我一个错误。

然而,论据位置的推断效果很好。

可能不会插入链式调用中的推理?

最佳答案

正如@Holger 所说,Java 8 改进了上下文推理,因此它可以工作_

public static <T> Iterator<T> iter(Iterable<T> i)
{
return i.iterator();
}

public static void main(String[] args)
{
Iterator<String> it = iter( new ArrayList<>() );
\____________________________/
}

它在 Java 7 中不起作用——关于 new ArrayList<>() 的推断不能依赖上下文。


要在问题中做你想做的事情,这将是一个巨大的语言变化。 John Rose 开始了类似的讨论,请参阅 http://mail.openjdk.java.net/pipermail/lambda-dev/2013-July/010531.html


过多的推理和过多的上下文依赖可能是一件坏事。并不是编译器无法处理复杂性——它可以。这是关于人类程序员是否可以处理它。我感觉到 Java 8 已经处于人类难以解析代码的危险水平。

关于Java 8 和广义目标类型推断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19934204/

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