我必须在Java 8中为我的类写一篇关于"javac工具“的文章。
以下是一些我不明白的事情。Oracle说,在新的Java8中:“JavaLanguageSpecification15.21节中的相等操作符的类型规则现在已经被javac命令正确地强制执行了。”
“Java8中的新事物”:http://www.oracle.com/technetwork/java/javase/8-whats-new-2157071.html
Java语言规范:http://docs.oracle.com/javase/specs/jls/se8/jls8-diffs.pdf
我真的不明白。我认为它在Java 7中运行得很好。有人知道我错过了什么吗?什么是Java 7中没有“正确执行”的?
如果有人有答案,你能告诉我你在哪里找到的,如果你不是偶然发现的;)
发布于 2014-10-01 10:43:25
下面是一个链接到错误报告,它报告了一个特定的情况,javac 7将编译一个根据JLS无效的==测试。尽管这一缺陷在2010年被标记为固定的,但讨论表明表示它在2013年仍在显现。
简而言之,我认为Java 8的这个“特性”实际上是一个bug修复。他们并没有真正改变语言本身(如JLS所定义的),也没有添加额外的标准库功能。他们只是修正了一个错误,这个错误从一开始就不可能出现。
发布于 2014-10-01 10:47:22
给定时间,这可能是对JDK-8013357的引用
此代码不应编译:
class Main {
public boolean func(Object obj) {
return obj == 0;
}
}但是javac (因为JDK 7接受它)。
https://stackoverflow.com/questions/26139461
复制相似问题