Java中的可序列化接口

时间:2015-03-05 21:22:23

标签: java

我理解拥有接口的重点是强制实现它的类实现/定义该接口中的所有抽象方法。

但是,在Java中的Object Serialization(转换为字节流)的过程中,要序列化的对象的类是必须实现Serializable接口的实例。 但是,我看不到定义接口的方法。那么,是否有一个ZERO方法的接口,如果是的话,甚至是可能的,如果是的话,如果它没有方法的目的是什么?

3 个答案:

答案 0 :(得分:2)

Serializable界面是标记界面。如果一个类实现它,那么运行时系统就知道该类是可序列化的。

在现代Java中,现在可以使用注释实现此效果,但在定义此接口时它们并不存在。

答案 1 :(得分:1)

是的,这样的界面是可能的。它被称为标记接口。还有其他这样的接口。

你可以看看

http://mrbool.com/what-is-marker-interface-in-java/28557

答案 2 :(得分:0)

正如我已经说过的,0方法接口的目的是关于纯合同。 让我在下一个例子中解释一下:

假设我们有一个由多个接口组成的简单数据访问层,如:

DeletableDao,InsertableDao,UpdatableDao等..以及像DaoImpl这样的实现类:

假设我们有这样的实体类:

public Person implements DaoEntity {
    private int id;
    private String name;

    // getters and setters
}

由于纯合同,DaoEntity是0方法的接口:

public DaoEntity {
}

让我们说DeletableDao看起来像这样:

public interface DeletableDao<T extends DaoEntity> {
    void delete(T t);
}

和实现类:

public DaoImpl implements DeletableDao<Person> {

     public void delete(Person p) {
        // Delete person
    }
}

这一切意味着什么? DaoEntity界面的目的是什么?这意味着只有DaoEntity子类的实例可以传递给delete方法并删除。