可以用Seralizable替换Marker接口

时间:2017-11-06 16:16:08

标签: java interface serializable

查看下面的代码,Marker interfaces表示我的BusinessObjectSerializable(对吗?)。

旧代码:

public final class State implements BusinessObject 
   ...
 }
public class Location implements BusinessObject{
   ...
 }

import java.io.Serializable;
public interface BusinessObject extends Serializable{   
}

我的问题是,由于BusinessObject的唯一目的是表明它是Serializable,因此可以简单地将其替换为:

public final class State implements Serializable {
...
public class Location implements Serializable {
...

并删除BusinessObject.java

1 个答案:

答案 0 :(得分:1)

理论上,是的,只要BusinessObject真的只延伸Serializable

现在,在更广泛的背景下,您可能希望在摆脱它之前执行完整性检查。

例如,在IDE中打开BusinessObject接口的类型层次结构,查看所有实现类,扩展接口等。

甚至可能存在代码库可以编译的边缘情况,但是如果通过反射引用BusinessObject接口,或者在JSP等声明性标记中引发问题。

对于这些情况,我还建议在整个项目中对BusinessObject进行文本搜索。

这也可以帮助您根除已弃用的评论。