我被告知Java中的Marker接口是一个空接口,用于向编译器或JVM发出信号,告知实现该接口的类的对象必须以特殊方式处理,例如序列化,克隆等。
但是最近我了解到它实际上与编译器或JVM无关。例如,在使用Serializable
接口的情况下,的方法writeObject(Object)
会ObjectOutputStream
执行类似的操作instanceOf Serializable
来检测类是否相应地实现Serializable
和抛出NotSerializableException
。一切都在代码中处理,这似乎是一种设计模式,所以我认为我们可以定义自己的标记接口。
现在我的疑问:
上面第一点提到的标记接口的定义是否错误?那么我们如何定义Marker接口呢?
并且instanceOf
为什么不使用运算符而不是使用运算符,所以为什么要使用writeObject(Serializable)
编译时类型检查而不是运行时呢?
注释比标记接口如何好?
幕布斯7119047
慕尼黑的夜晚无繁华
红糖糍粑