我是 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/