【发布时间】:2016-02-17 08:53:40
【问题描述】:
我有一个关于 Java 中的“接口”的问题,问题听起来像这样:
在我的类中实现空白(空)接口有什么用?
为了更好地理解问题,我举一个具体的例子:
如果你去看“ArrayList”类的实现,你会发现它实现了两个接口(RandomAccess和Cloneable),实际上是空的!
为什么会这样? 通过为我的班级实现一个完全空白的界面,我能赢得什么?
如果您有任何想法,请发表评论。
提前谢谢你。
【问题讨论】:
我有一个关于 Java 中的“接口”的问题,问题听起来像这样:
在我的类中实现空白(空)接口有什么用?
为了更好地理解问题,我举一个具体的例子:
如果你去看“ArrayList”类的实现,你会发现它实现了两个接口(RandomAccess和Cloneable),实际上是空的!
为什么会这样? 通过为我的班级实现一个完全空白的界面,我能赢得什么?
如果您有任何想法,请发表评论。
提前谢谢你。
【问题讨论】:
这些接口被称为标记接口(用于标记该类型的类)并且在运行时它们用于检查类型。
例如
在运行程序时,内部逻辑可能是这样的
if (yourList instanceof Cloneable) {
// Hey this object is of type Clonable, please proceed
} else {
// Not that type. Reject
}
【讨论】:
ObjectOutputStream 对Serializable(标记界面)+1 进行了这种检查
这些接口仅用于不同的识别实例,请考虑:
interface MyInterface1 {}
interface MyInterface2 {}
消费代码:
if (foo is MyInterface1) ...
【讨论】: