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