Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 具有可序列化的默认行为的函数接口_Java_Interface_Compiler Warnings_Serializable_Default Method - Fatal编程技术网

Java 具有可序列化的默认行为的函数接口

Java 具有可序列化的默认行为的函数接口,java,interface,compiler-warnings,serializable,default-method,Java,Interface,Compiler Warnings,Serializable,Default Method,当没有默认方法的接口扩展了可序列化的everythings时,一切正常。 但当该接口的默认方法出现在图片中时,我们会收到一条警告,警告如下: MyInterface.java:可序列化类MyInterface没有定义 serialVersionUID的定义 当我将接口更改为抽象类时,它变得很有趣。错误消失了 警告发生表总结如下: |----------------------------|------------------| | Type |

当没有默认方法的接口扩展了可序列化的everythings时,一切正常。 但当该接口的默认方法出现在图片中时,我们会收到一条警告,警告如下:

MyInterface.java:可序列化类MyInterface没有定义 serialVersionUID的定义

当我将接口更改为抽象类时,它变得很有趣。错误消失了

警告发生表总结如下:

|----------------------------|------------------|
|            Type            |      WARNING     |
|----------------------------|------------------|
| interface with no defaults |         NO       |
|----------------------------|------------------|
| interface with defaults    |        YES       |
|----------------------------|------------------|
| abstract class             |         NO       |
|----------------------------|------------------|

这有什么原因吗?或者这只是一个bug?

只有在使用
javac-Xlint
时才会发生这种情况。和-X选项是特定于Oracle的,不是任何Java规范的一部分。此警告出现在1.8u152和9.0.1上。当我尝试时,没有此类问题Eclipse@DodgyCodeException对我使用的是OracleJDK,我使用的是-Xlint。这仍然是一个奇怪的行为。谢谢你在这个问题上提出错误。它现在被追踪为。接口上缺少serialVersionUID警告确实是一个bug。由于接口从未序列化,因此它拥有serialVersionUID是毫无意义的。但是,您可以说抽象类不会生成缺少的svuid警告。对我来说确实如此,而且应该如此。在什么情况下javac不会对抽象类发出警告?啊。JDK 7不会对缺少serialVersionUID的可序列化抽象类发出警告。看见这是固定的,但是javac仍然会在不应该发出警告的时候发出警告,并且可能不会在应该发出警告的时候发出警告。我们会把它们修好的。