没有方法的接口
问题内容:
为什么Java引入一些没有定义方法的接口?例如Cloneable
,Serializable
,Type
等等。
第二件事:在Class.class
包中,定义了一个方法,registerNatives()
没有身体,并从静态块调用,但Class.class
不是抽象的,而是final
。为什么这样?以及为什么Java需要某种没有主体的方法从静态块中调用?
问题答案:
为什么Java引入一些没有定义方法的接口?
这称为标记或标记接口。这些不用于任何用途或操作。这些方法用于标记或标记类。这样就可以确定someclass是否是这些类的子级。
关于第二个问题
如果仔细观察,您会看到声明为
private static native void registerNatives();
因此registerNatives
是本机方法。
那么什么是本机方法。如果您看到这样的问题
该方法以“本机”代码实现。即,无法在JVM中运行的代码。它通常用C或C ++编写。
本机方法通常用于与以其他编程语言编写的系统调用或库进行接口。
因此,这些方法是从本机代码加载的。因此,您无需声明方法的主体,但它们仍然不是抽象的,因为它们是通过本机代码实现的。