Java中标识接口有什么作用

  介绍

这篇文章给大家分享的是有关Java中标识接口有什么作用的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。

标识接口是没有任何方法和属性的接口。标识接口不对实现它的类有任何语义上的要求,它仅仅表明实现它的类属于一个特定的类型。
标接口在爪哇语言中有一些很著名的应用,比如java.io.Serializable和java.rmi。远程等接口便是标识接口。标识接口,当一个类实现了一个标识接口之后就像是给自己打了个标签。

为此,我们通过一个通俗而有趣的示例!这个示例是设计一个猎人,其持有一把智能猎枪,这就是说这把猎枪会自动识别人类,若发现瞄准的目标是人的类,就不会开的火,而其它的任何事物都通杀。
为此,我们使用了下面三个接口:
<强>一个用来表示万事万物的东西

公共接口的东西{}

<强>人类的接口:

人类公共接口扩展的东西{}

<强>动物的接口:

公共类中国实现人类{}

<强>日本人:

日本公共类{}

<强>狗:

公共类狗实现动物{}

<强>妖怪(他很聪明,给自己帖上了人的标签):

1公共类怪物实现人类{}

下面这个程序的核心部分,<强>猎人类及客户端程序:

公共类猎人{      公共空间火灾(对象目标)   {   如果目标instanceof人类){   System.out.println(“这下完了,打中了一个人,该去坐牢了!“);   其他}{   System.out.println(“恭喜你,打中了一只动物!“);   }   }//智能的枪   公共空间intelligentFire(对象目标)   {   如果目标instanceof人类){   返回;   }   System.out.println(“开了一枪!“+ target.getClass ());//下面进行秒杀等相关处理//销毁他   目标=零;   }      公共静态void main (String [] args) {   猎人猎人猎人=new ();   对象[]   对象=new Object[]{日本新的狗(),(),日本新(),中国新(),新的怪物(),新东西(){}};   for (int i=0;i

运行程序,你会发现输出类似下面结果:

开了一枪!类springroad.demo.taginterface.Dog   开了一枪!类springroad.demo.taginterface.Japanese   开了一枪!类springroad.demo.taginterface.Japanese   开了一枪!类springroad.demo.taginterface.Hunter 1美元

由此可见,智能猎枪瞄准6个目标,开了4枪,只对中国人,及怪物的实例没有开枪,因为这里讨论的是标签接口,虽然人类没有任何方法,但从智能猎枪的角度来看,他就是通过这个标签来判断是否可以开火的。他不用管也管不了目标的层次等级关系(比如日本肯定很非常鲜明等级结构),即继承关系。他也管不了目标的来自于哪儿。比如,是用新操作符创建,还是从容器中取,或者是从网络某个地方加载一个。

猎人只是制订了一个简单的规则,你要想不让我的枪对你开的火,你就必须在自己身上帖上一个人类的标签。也就是说你必须遵守这个规则。
现在回过头来看,因为妖怪怪物真身应该是一条蛇或其它什么动物,但是他懂得猎人制订的规则,于在巧妙的给自己帖上了一个人类的标签,以致于欺骗了我们的智能猎枪。
而日本则自认为自己了不起,不按规则办的事,我就不理你猎人制订的规则,什么人标签,我就是不用。于是放到我们的程序中当然就只有挨杀的份了。

由此可见,空接口(标签接口)的重要性,在像本例中,给不给自己帖上标签,这是一个性命莜关的问题。其实在OO的世界中,空接口可以算是最高的层像。

Java中标识接口有什么作用