在玩这个谜题(这是一个Java关键字琐事游戏)时,我遇到了native
关键字.
Java中的native关键字用于什么?
为什么Java引入了一些没有定义方法的接口?例如Cloneable
,Serializable
,Type
等等.
第二件事:在Class.class
包中有一个registerNatives()
没有body 定义的方法,从静态块调用,但Class.class
不是抽象的,但是final
.为什么这样?为什么Java需要一些没有body的方法来从静态块中调用.
我试图理解Java的Object的hashCode(),并看到Java Object的hashCode()方法的以下代码:
package java.lang;
public class Object {
// Some more code
public native int hashCode();
// Some other code
}
Run Code Online (Sandbox Code Playgroud)
package com.example.entity;
public class FirstClass {
private int id;
private String name;
// getters and setters
}
Run Code Online (Sandbox Code Playgroud)
所以,这个类即:隐式FirstClass
扩展Object
类.
package com.example.app.main;
import com.example.entity.FirstClass;
public class MainApp {
public static void main(String[] args) {
FirstClass fs = new FirstClass();
fs.setId(1);
fs.setName("TEST");
System.out.println("The hasCode for object fs is " + fs.hashCode());
}
}
Run Code Online (Sandbox Code Playgroud)
正如隐式FirstClass
扩展 …