标识接口是没有任何方法和属性的接口。标识接口不对实现它的类有任何语义上的要求,它仅仅表明实现它的类属于一个特定的类型。
结合instanceof 判断 类的实例是否 持有标记接口的标签
例如判断是否实现Serializable接口
if (obj instanceof String) {
writeString((String) obj, unshared);
} else if (cl.isArray()) {
writeArray(obj, desc, unshared);
} else if (obj instanceof Enum) {
writeEnum((Enum) obj, desc, unshared);
} else if (obj instanceof Serializable) {
writeOrdinaryObject(obj, desc, unshared);
} else {
if (extendedDebugInfo) {
throw new NotSerializableException(cl.getName() + " "
+ debugInfoStack.toString());
} else {
throw new NotSerializableException(cl.getName());
}
}
RandomAccess(随机访问)、RandomAccess、Serializable的接口可以看到,内部都是一些空接口,没有定义接口方法。
RandomAccess:实现该接口 代表集合可以随机访问,例如ArrayList,LinkedList没有实现。随机访问 导致 for 循环会比使用迭代器快一些。