无需任何方法的接口
2022-09-02 20:54:35
为什么Java引入了一些没有定义方法的接口?例如、、等等。Cloneable
Serializable
Type
第二件事:在包中,有一个没有 body 定义的方法,它是从静态块调用的,但不是抽象的,而是 。为什么会这样?以及为什么Java需要一些没有主体的方法才能从静态块调用?Class.class
registerNatives()
Class.class
final
为什么Java引入了一些没有定义方法的接口?例如、、等等。Cloneable
Serializable
Type
第二件事:在包中,有一个没有 body 定义的方法,它是从静态块调用的,但不是抽象的,而是 。为什么会这样?以及为什么Java需要一些没有主体的方法才能从静态块调用?Class.class
registerNatives()
Class.class
final
为什么Java引入了一些没有定义方法的接口?
这称为标记或标记接口。这些不用于任何用途或操作。这些方法用于标记或标记类。以便您可以确定某个类是否是这些类的子类。
关于第二个问题
如果你仔细观察,你可以看到声明是
private static native void registerNatives();
原生方法也是如此。registerNatives
那么什么是本机方法。如果你看到这个所以问题
该方法是在“本机”代码中实现的。也就是说,不在 JVM 中运行的代码。它通常用C或C++编写。
本机方法通常用于与用其他编程语言编写的系统调用或库进行交互。
因此,这些方法是从本机代码加载的。因此,您不需要声明方法的主体,但它们仍然不是抽象的,因为它们的实现来自本机代码。
标记接口用作标记,将消息通知 Java 编译器,以便它可以向实现它的类添加特殊行为。Java 标记接口中没有成员。
Marker 接口的用途是通过向类提供某些功能(如果类实现标记接口)来强制类中的某种功能。