Java编译无法使用方法参考,但可以使用lambda

问Zamarreño:

我们正在尝试向collect我们的扩展Java Stream API 添加重载方法,我们目前将其定义为:

interface ExtendedStream<R> extends Stream<R> {

   <R1> R1 collect(SerializableSupplier<Collector<? super R, ?, R1>> supplier);

}

SerializableSupplier 被定义为:

interface SerializableSupplier<T> extends Serializable, Supplier<T> {
}

使用lambda调用此collect方法可以很好地工作,但使用方法引用调用它时将无法编译,并显示以下错误:

Error:(50, 72) java: incompatible types: cannot infer type-variable(s) R1,capture#1 of ?,T
    (argument mismatch; bad return type in method reference
      java.util.stream.Collector<T,capture#1 of ?,java.util.List<T>> cannot be converted to java.util.stream.Collector<? super java.util.Map.Entry<java.lang.Integer,java.lang.String>,?,R1>)

我在这里创建了一个独立的Java类,您可以将其加载到编译器中进行尝试。

我当前正在使用Java版本:

java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

这是我们定义事物时的错误还是某些错误?

注意:我从IntelliJ和使用Maven进行编译时都收到此编译错误。我不使用Eclipse。

干杯,加尔德

尤金:

这是一个错误,javac 8因为它可以与javac-9(使用最新版本)一起很好地进行编译-我只是找不到它,而我真的非常想这样做

几乎像往常一样,添加更多类型信息可以解决此类问题。另外请注意,我已将您更改ComparatorComparator.comparingInt...

 return entrySet.stream().sorted(
            Comparator.comparingInt(Entry::getKey)).collect(
                    Collectors::<Map.Entry<Integer, String>> toList); 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我不能使用-fPIE进行编译,但可以使用-fPIC进行编译?

无法使用Java语言访问类,但可以使用Kotlin

symbolicatecrash无法与dSYM一起使用,但可以使用“ atos”

无法使用命令行连接到MySQL,但可以使用MySQL Workbench

类模板继承无法在GCC中编译,但可以在Visual Studio中使用

Gulp Watch无法使用导入的文件,但可以使用主文件

由于未知原因,无法使用pipenv安装Django(但可以使用pip)

无法在cmd中导入某些包,但可以使用sublime text3导入

无法连接到Localdb,但可以使用namedpipe

Web API 2 Post 404,但可以使用

Web API无法使用GET绑定不可变对象,但可以使用POST绑定

Tensorflow无法通过变量获得梯度,但可以使用Tensor

Laravel Ajax无法在url中传递参数,但可以使用常量

无法使用PHP将视频上传到Facebook页面,但可以使用curl

我无法ping microsoft.com,但可以使用浏览器打开它

我无法使用su命令以root用户身份登录,但可以使用SSH登录

Rails无法识别补丁请求方法,但可以使用PUT

无法打开AVD管理器,但可以使用模拟器运行项目

MediaContentProvider无法使用SMS应用程序(但可以使用WhatsApp,电子邮件等)

创建无法登录但可以使用FTP的Windows用户?

我无法使用scp复制远程文件,但可以使用ssh登录

IIS 7无法提供.aspx页,但可以使用默认文件

Java ByteBuffer compareTo无法使用分配,但可以包装

Angular and Stripe,无法使用$ http创建Card令牌,但可以使用CURL

DNS无法解析,但可以使用FQDN ping和使用nslookup吗?

无法使用xcodebuild构建项目,但可以使用Xcode.app

DynDns 无法从自己的网络访问,但可以使用代理

无法使用 Visual Studio 访问 Azure SQL 数据库,但可以使用 SSMS

无法通过scrapy 从网站中提取数据,但可以使用xpath 辅助扩展