Java 接口实现概念
在java中,如果我们在类中实现接口,我们必须提供接口中存在的方法的实现。但是在可序列化接口的情况下,我们不需要提供可序列化接口中存在的方法的实现。为什么 但在可序列化接口的情况下,我们不需要提供 序列化接口中存在的方法的实现。为什么 因为它仅用于标记目的,不包含要实现的方法 当一个类用Java 接口实现概念,java,interface,serializable,Java,Interface,Serializable,在java中,如果我们在类中实现接口,我们必须提供接口中存在的方法的实现。但是在可序列化接口的情况下,我们不需要提供可序列化接口中存在的方法的实现。为什么 但在可序列化接口的情况下,我们不需要提供 序列化接口中存在的方法的实现。为什么 因为它仅用于标记目的,不包含要实现的方法 当一个类用可序列化接口“标记为””时,这仅仅意味着它应该/可以序列化/反序列化 从Oracle的: 未实现此接口的类将不具有任何 它们的状态已序列化或反序列化。可序列化文件的所有子类型 类本身是可序列化的。序列化接口没有
可序列化接口“标记为””时,这仅仅意味着它应该/可以序列化/反序列化
从Oracle的:
未实现此接口的类将不具有任何
它们的状态已序列化或反序列化。可序列化文件的所有子类型
类本身是可序列化的。序列化接口没有
方法或字段和仅用于标识存在的语义
可序列化。
和来自:
Java中标记接口的应用示例
编程语言是可串行化的接口。一个类实现
此接口用于指示其非瞬态数据成员可以
写入ObjectOutputStream。ObjectOutputStream是私有的
方法writeObject()包含一系列要执行的测试的实例
确定可写性,其中一个查找可序列化
接口。如果这些测试中的任何一个失败,该方法将抛出
NotSerializableException
例如,如果以下类没有使用Serializable
接口标记:
public class Employee implements java.io.Serializable
{
public String name;
...
}
然后,以下序列化代码将因NotSerializableException
而失败:
Employee e = new Employee();
e.name = "Reyan Ali";
FileOutputStream fileOut = new FileOutputStream("/tmp/employee.ser");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(e);
out.close();
fileOut.close();
System.out.printf("Serialized data is saved in /tmp/employee.ser");
注意对于*.ser
文件扩展名,将序列化java对象写入文件时使用该扩展名。可序列化接口不包含任何方法。我在想TL;DR版本是因为序列化数据的需要出现在Java有注释之前。如果您今天要这么做,您可能会使用注释,就像JPA使用@Entity一样,但是更改它会破坏所有代码。我真的想知道marker接口在内部是如何工作的?