java语言中,有些接口内部没有让声明任何方法,也就是说,实现这些接口的类不需要重写任何方法。这些没有任何方法声明的接口叫做标识接口,标识接口对实现它的类没有任何语义上的要求,仅仅充当一个标识的作用,用来证明实现它的类属于一个特定的类型。
这个标签类似于汽车的标识,当我们看到一个汽车的标志图案的时候,就能知道这个汽车的品牌。
java类库中已存在的标识接口有Cloneable和Serializable等,在使用的时候经常用instanceof来判断实例对象是否实现了一个标识接口。
例如:假如现在判断一个对象是不是宝马旗下的车。是输出结果,代码如下:
package com.dushan.test;
public interface Car {
}
package com.dushan.test;
public interface BMW extends Car {
}
package com.dushan.test;
public interface BENZ extends Car {
}
package com.dushan.test;
public class BMW3 implements BMW {
public String toString(){
return "BMW3";
}
}
package com.dushan.test;
public class GLC implements BENZ {
public String toString(){
return "GLC";
}
}
package com.dushan.test;
import java.util.ArrayList;
public class Test {
public static ArrayList<Car> collectBMWCar(Car[] c){
ArrayList<Car> list = new ArrayList<Car>();
for(int i= 0;i<c.length;i++){
if(!(c[i] instanceof BENZ)){
list.add(c[i]);
}
}
return list;
}
public static void main(String[] args){
Car[] c = {new BMW3(),new GLC()};
ArrayList<Car> cars = collectBMWCar(c);
System.out.println("the result is :");
for(int i =0;i<cars.size();i++){
System.out.println(cars.get(i));
}
}
}
运行结果如图:
the result is :
BMW3