为什么java编译器不报告Intellij中多播表达式的未经检查的强制转换警告?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了为什么java编译器不报告Intellij中多播表达式的未经检查的强制转换警告?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1732字,纯文字阅读大概需要3分钟。
内容图文
![为什么java编译器不报告Intellij中多播表达式的未经检查的强制转换警告?](/upload/InfoBanner/zyjiaocheng/728/87023a92880640eea5cf758df63abb33.jpg)
为什么以下代码没有报告Intellij IDEA与jdk 1.8.0_121的未经检查的警告,因为供应商< R> &安培; Serializable是T的超类型?
<T extends Supplier<Integer> & Serializable> T createdBy(AtomicInteger counter) {
// v--- if I removed the first cast expression, I can't compile it
return (T) (Supplier<Integer> & Serializable) counter::incrementAndGet;
// ^--- it should be reports unchecked warnings, but it doesn't
}
以下代码报告了未经检查的强制警告:
<T, R extends T> R apply(T value) {
return (R) value;
// ^--- unchecked cast
}
为什么会出现这个问题,感兴趣的事情发生在我编写下面的代码用于链接具有多超类型的类型时:
AtomicInteger counter = new AtomicInteger(0);
Supplier<Integer> serialized = serialized(createdBy(counter));
assert serialized.get() == 1; // ok
assert counter.get() == 0 ; // ok
<T extends Serializable> T serialized(T value) {
return deserialize(serialize(value));
}
我搜索过JLS,但我找不到确切有利的证据.有人能告诉我为什么吗?
解决方法:
在IntelliJ IDEA中,java编译器报告未经检查的警告,您需要在Java编译器中添加-Xlint:unchecked选项.其他命令行参数:
如果您尝试使用命令行javac编译它,它也不会向您报告警告本身,但会告诉您如何启用未经检查的警告:
Note: Main.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
如果未指定此选项,IntelliJ IDEA将显示相同的消息:
添加-Xlint:unchecked选项后,输出将更改为:
Information:javac 1.8.0_121 was used to compile java sources
Information:01.07.2017 16:07 - Compilation completed successfully with 1 warning in 2s 553ms
D:\work\attaches\unchecked\src\Main.java
Warning:Warning:line (9)java: unchecked cast
required: T
found: java.lang.Object&java.util.function.Supplier<java.lang.Integer>&java.io.Serializable
如您所见,IntelliJ IDEA的行为与命令行javac完全相同.
内容总结
以上是互联网集市为您收集整理的为什么java编译器不报告Intellij中多播表达式的未经检查的强制转换警告?全部内容,希望文章能够帮你解决为什么java编译器不报告Intellij中多播表达式的未经检查的强制转换警告?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。