gpt4 book ai didi

java - 内联代码 - 不兼容的类型 : cannot infer type-variable(s) T

转载 作者:行者123 更新时间:2023-11-30 01:55:30 26 4
gpt4 key购买 nike

我有这样一段代码:

 Stream<Supplier<String>> stream = Stream.of(() -> "str");
stream.map(Supplier::get).findFirst();

我自然想做的是:

Stream.of(() -> "str").map(Supplier::get).findFirst();

但是我得到了:

incompatible types: cannot infer type-variable(s) T

invalid method reference non-static method get() cannot be referenced from a static context

我很困惑,因为我认为内联代码不会改变它的行为。内联后出现错误的机制是什么?

编辑:决定添加一些评论来强调我的想法。让我们更简洁的代码,例如:

Stream<Integer> stream = Stream.of(1, 2);
stream.of(1, 2).map(i -> i * i).findFirst();

我能做到:

Stream.of(1, 2).map(i -> i * i).findFirst();

而且没问题,那为什么上面的例子(不起作用)呢?

最佳答案

就我而言,该行:

Stream.of(() -> "str").map(Supplier::get).findFirst();

给我编译错误 "The method of(() -> {}) is undefined for the type Stream" 。它会给出编译错误,因为它无法推断类型。但是当你使用Stream<Supplier<String>> stream = Stream.of(() -> "str");时它会自动从引用变量声明中推断出类型。有关泛型类型推断的更多信息,请访问 link .

Stream.<Supplier<String>>of(() -> "str").map(Supplier::get).findFirst();

将按预期工作。

关于java - 内联代码 - 不兼容的类型 : cannot infer type-variable(s) T,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54668746/

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