【问题标题】:Can Marker interface be replaced with SeralizableMarker接口可以用Seralizable代替吗
【发布时间】:2018-04-18 20:53:59
【问题描述】:

查看下面的代码,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

【问题讨论】:

  • 这取决于您是否还想将该标记界面用于其他事情。

标签: java interface serializable


【解决方案1】:

理论上,是的,只要BusinessObject 真的只扩展Serializable

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

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

如果BusinessObject 接口通过反射或在声明性标记(如JSP)中引用,甚至可能存在代码库可以编译但在运行时出现问题的边缘情况。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 2015-01-30
    • 1970-01-01
    • 2010-12-21
    • 2019-06-03
    • 2016-05-04
    相关资源
    最近更新 更多