定义一个空的接口有哪些优点和缺点啊!
我现在了解的一个空接口只有一个
interface Serializable{
}
大家还知不知道有类似这样的接口名啊?
象这样的空接口 有什么优点和缺点啊?
------解决方案--------------------空接口相当于一个标记。
jdk1.5以后提供了annotation,就可以不再使用空接口了,除非为了向前兼容。
------解决方案--------------------楼上正解。
比如在Hibernate的API中,Session有get和load方法,其中要传的第二个参数是Serializable类型的(不是Object)。这个参数是用来放主键值的,可以放Integer,Long,String等等类型的对象,他们都实现了Serializable接口。这就是所谓的向前兼容。
比如,EJB中的EnterpriseBean,它也是一个空接口。。
------解决方案--------------------还有没有其他的空接口?
------解决方案--------------------空接口只是一个标志
------解决方案--------------------java.lang.Cloneable 也是一个标记接口。
------解决方案--------------------这是一个标志接口,它的作用是标志对象的一些附加特性,比如你那个就是可序列化
------解决方案--------------------标志有什么用呢?...
还是没说优缺点在哪呀。。。虽然问题不是我问的...
------解决方案--------------------什么都没做,只是标记。
------解决方案--------------------我简单说说我在自己项目里的应用把。
我的项目大概是个绘制类似流程图的东西(当时不知道GEF,重新发明了好多轮子)。所有元素都继承某个可绘制对象。但其中有子类可以移动,有些可以删除,有些可以再其上关联其他对象……所有这些特性我都用空的接口来标识,比如可移动的就实现movable接口,可删除的就实现deletable接口等等。我将对象创建后扔到编辑区,在相应输入事件时,比如要删除,那我就看选择的这个对象有是不是deletable的(用instanceof来判断),然后再进行相应操作,等等。
其实真的实现比这要复杂些,但大概是这个意思