Java标识接口的使用方法
投稿:laozhang
在本篇文章中小编给大家分享了关于Java标识接口的使用方法和教程内容,有需要的朋友们学习下。
标识接口是没有任何方法和属性的接口。标识接口不对实现它的类有任何语义上的要求,它仅仅表明实现它的类属于一个特定的类型。
标接口在Java语言中有一些很著名的应用,比如java.io.Serializable和java.rmi.Remote等接口便是标识接口。标识接口,当一个类实现了一个标识接口之后就像是给自己打了个标签。
为此,我们使用了下面三个接口:
一个用来表示万事万物的SomeThing
public interface SomeThing {}
人类的接口:
public interface Humans extends SomeThing{}
动物的接口:
public interface Animals extends SomeThing{}
然后是一系列的实现:
狗:
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<objects.length; i++){ hunter.intelligentFire(objects[i]); } }
我就不理你Hunter制订的规则,什么Humans标签,我就是不用。于是放到我们的程序中当然就只有挨打的份了。
由此可见,空接口(标签接口)的重要性,在像本例中,给不给自己帖上标签,这是一个性命莜关的问题。其实在OO的世界中,空接口可以算是最高的层像。