java - 没有方法/常量定义的接口(interface)的用途

标签 java

我是 Java 新手。 我能够编译以下界面而没有任何错误。

文件名:empty_interface.java

文件内容:

public interface empty_interface {}

问题

a) 我认为接口(interface)是实现者必须实现的契约。如果扩展上述接口(interface),实现者将实现什么?

b) 可能与 a) 有关...但我要说...为什么编译器会允许未定义的接口(interface)成功编译?

最佳答案

JDK 中已经有许多“标记”接口(interface)。这只是表示不需要方法的东西。

最常见的示例是 Serializable,表示类可以序列化。库会完成剩下的工作,因此不需要其他方法。

一个晦涩的是 RandomAccess,它表示可以以有效的方式随机访问列表。 Collections.sort() 使用它。

另一个类是 Cloneable,它是一个标记接口(interface),但可能应该有一个方法

public Object clone();

从 Java 5.0 开始,添加这样的元信息的更好方法是使用注释,但这些以前不可用。

这是 Jon Skeet 对类似问题的出色回答 marker interface in java

关于java - 没有方法/常量定义的接口(interface)的用途,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18237204/

相关文章:

java - 在java中使用套接字连接的同时发送数据

java - 不停止广播接收器中的当前歌曲

java - 如何完成三个Queue的实现以及三个Stack的实现?

java - 从异常中获取值

java - 如何将 String 或 CharSequence 的一部分转换为大写?

java - 从 Android Studio 中的 CSV 文件中获取信息?

java - 在不使用 Intent 的情况下将变量从一个类传递到另一个类会得到额外的好处

java - 采用 DDD 方法的领域层和 DAO 层

java - haproxy - 它可以自己管理 session 吗?

java - 爆炸性的ROOT.war