怎么在Java项目中使用标识接口
这篇文章将为大家详细讲解有关怎么在Java项目中使用标识接口,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
创新互联专注于顺昌网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供顺昌营销型网站建设,顺昌网站制作、顺昌网页设计、顺昌网站官网定制、小程序开发服务,打造顺昌网络公司原创品牌,更为您提供顺昌网站排名全网营销落地服务。
一个用来表示万事万物的SomeThing
public interface SomeThing {}
人类的接口:
public interface Humans extends SomeThing{}
动物的接口:
public interface Animals extends SomeThing{}
然后是一系列的实现:
中国人:
public class Chinese implements Humans {}
日本人:
public class Japanese {}
狗:
public class Dog implements Animals {}
妖怪(他很聪明,给自己帖上了人的标签):
public class Monster implements Humans {}
下面这个程序的核心部分,猎人类及客户端程序:
public class Hunter{ public void fire(Object target) { if(target instanceof Humans){ System.out.println("这下完了,打中了一个人,该去坐牢了!"); }else{ System.out.println("恭喜你,打中了一只动物!"); } } //智能的枪 public void intelligentFire(Object target) { if(target instanceof Humans){ return; } System.out.println("开了一枪!"+target.getClass()); //下面进行秒杀等相关处理 //销毁他 target=null; } public static void main(String[] args) { Hunter hunter=new Hunter(); Object[] objects =new Object[]{new Dog(),new Japanese(),new Japanese(),new Chinese(),new Monster(),new SomeThing(){}}; for(int i=0; i运行程序,你会发现输出类似下面结果:
开了一枪!class springroad.demo.taginterface.Dog
开了一枪!class springroad.demo.taginterface.Japanese
开了一枪!class springroad.demo.taginterface.Japanese
开了一枪!class springroad.demo.taginterface.Hunter$1由此可见,智能猎枪瞄准6个目标,开了4枪。只对Chinese、及Monster的实例没有开枪。因为这里讨论的是标签接口,虽然Humans没有任何方法,但从智能猎枪的角度来看,他就是通过这个标签来判断是否可以开火的。他不用管也管不了目标的层次等级关系(比如Japanese肯定很非常鲜明等级结构),即继承关系。他也管不了目标的来自于哪儿。比如,是用new操作符创建,还是从容器中取,或者是从网络某个地方加载一个。
Hunter只是制订了一个简单的规则,你要想不让我的枪对你开火,你就必须在自己身上帖上一个Humans的标签。也就是说你必须遵守这个规则。
现在回过头来看,因为妖怪Monster真身应该是一条蛇或其它什么动物,但是他懂得Hunter制订的规则,于在巧妙的给自己帖上了一个Humans的标签,以致于欺骗了我们的智能猎枪。
而Japanese则自认为自己了不起,不按规则办事,我就不理你Hunter制订的规则,什么Humans标签,我就是不用。于是放到我们的程序中当然就只有挨杀的份了。
关于怎么在Java项目中使用标识接口就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
本文题目:怎么在Java项目中使用标识接口
文章网址:http://ybzwz.com/article/giocig.html