来源和行为兼容性

时间:2016-03-09 15:51:39

标签: java jvm java-8 java-7

我在查看源代码不兼容性与行为不兼容性之间的区别,但我无法理解它。有人可以解释一下吗

例如,如果Java 8和Java 7之间存在源代码不兼容,这是否意味着尽管在Java 8中运行具有该不兼容性的Java 7编译代码可以正常工作但如果我使用Java 8重新编译该代码,我会得到错误?

1 个答案:

答案 0 :(得分:3)

是的,尽管这些案件非常罕见,并且有充分的理由。

我可以想到一个明显的例子,就是以有计划的方式发生 是在引入<title>textBoxes.html</title> <script type = "text/javascript"> // from textBoxes.html function repleace(){ var txtName = document.getElementById("txtName"); var txtOutput = document.getElementById("txtOutput"); var name = txtName.value; if(name == "toni"){ name = "ani"; } txtOutput.value = name; } </script> <link rel = "stylesheet" type = "text/css" href = "textBoxes.css" /> </head> <body> <h1>Text Box Input and Output</h1> <form action = ""> <fieldset> <label>Type your name: </label> <input type = "text" id = "txtName" /> <input type = "button" value = "GO" onclick = "repleace()"/> <input type = "text" id = "txtOutput" /> </fieldset> </form> </body> </html>enum关键字的时候。

以下将使用Java 1.4编译:

assert

并且仍然可以在任何后来的JVM上运行,但它不会再用Java的更高版本进行编译。或者为了更加明确,如果没有为public void foo() { int enum = 42; } 指定-source 1.4选项,它就无法编译。

compiler bug you cited是一个如何发生意外的示例(即使他们提供的示例代码非常有用,即使您设法编译它,在运行时它只会抛出一个NPE)。