我曾经学过,在Java中,标记接口是一种空接口,用于向编译器或JVM发出信号,以便对实现该接口的类的对象进行特殊处理,例如序列化、克隆等。 但最近我了解到,它实际上与编译器或JVM无关。例如,在Serializable接口的情况下,ObjectOutputStream的writeObject...
在Stack Overflow上之前已经讨论过,我们应该优先使用属性而不是标记接口(没有任何成员的接口)。MSDN上的接口设计文章也肯定了这一建议: 避免使用标记接口(没有成员的接口)。 自定义属性提供了标记类型的方法。有关自定义属性的更多信息,请参见编写自定义属性。当您可以推迟对属性的检...
我正在研究nServiceBus,并遇到了这个接口。 namespace NServiceBus { public interface IMessage { } } 一个空接口有什么用途?
如果Serializable接口只是用于传递Java类的元数据的标记接口-我有点困惑: 阅读了Java序列化算法的过程(从底部到顶部的元数据,然后从顶部到底部的实际实例数据),我无法真正理解哪些数据不能通过该算法处理。 简而言之: 什么数据可能导致NotSerializableExce...
为什么ObjectOutputStream.writeObject(Object o)不接受Serializable?为什么它要接收一个Object?
我想问为什么Java注释经常被使用...我知道它们在例如JPA中取代了XML配置,但为什么这种配置被使用呢? 考虑以下代码片段:@Entity class Ent{ // some fields } //... somewhere in the other file far far a...
我很难决定是使用一个标记接口还是一个空的抽象类。 我有两个类BrokerResponse和Notification,它们没有结构上的相似之处。唯一连接它们的是需要订阅。void register(Receivable receivable, BrokerObserver observer) 我...
我认为不行,因为标记接口原则是不含有任何方法,但是由于默认方法不是抽象的,所以我不确定。
从技术上讲,我知道为什么类需要实现Serializable接口。原因是ObjectOutputStream的writeObject方法在写入对象状态之前会内部检查“是否实现了Serializable”。 但我的问题是这样做的必要性是什么?writeObject方法可以直接写入对象状态,无论对...