我正在看nServiceBus并通过这个界面
namespace NServiceBus { public interface IMessage { } }
空接口有什么用?
通常它是用来表示一个类的用法.您可以实现IMessage来表示您的类是消息.然后,其他代码可以使用反射来查看您的对象是否要用作消息并相应地执行操作.
这是Java在注释之前经常使用的东西.在.Net中,使用属性更清晰.
@ Stimpy77谢谢!我没想过那样.我希望你允许我以更一般的方式改写你的评论.
必须在运行时使用反射检查注释和属性.可以使用编译器中的类型系统在编译时检查空接口.这根本不会在运行时产生任何开销,因此速度更快.
也称为标记界面:
http://en.wikipedia.org/wiki/Marker_interface_pattern
在java中Serializable
就是一个完美的例子.它没有定义任何方法,但每个"实现"它的类必须确保它是可序列化的,并且不能引用无法序列化的东西,如数据库连接,打开文件等.
在Java中,空接口通常用于"标记"类 - 这些天通常会使用注释.
这只是向类中添加一些元数据的
一种方式,即即使不涉及普通成员,"此类也适合使用".