Rumah  >  Artikel  >  Java  >  Penggunaan kata kunci asli dalam Java

Penggunaan kata kunci asli dalam Java

WBOY
WBOYasal
2024-02-20 22:12:03644semak imbas

Penggunaan kata kunci asli dalam Java

Penggunaan kata kunci asli dalam Java

Di Jawa, kata kunci asli digunakan untuk menunjukkan bahawa kaedah dilaksanakan menggunakan bahasa peringkat rendah (seperti C atau C++) dan bukannya bahasa Java. Menggunakan kata kunci asli, anda boleh memanggil fungsi yang dilaksanakan dalam bahasa bukan Java lain di Jawa, seperti fungsi khusus sistem pengendalian, kawalan peranti perkakasan, dsb.

Pengisytiharan kaedah asli tidak termasuk kod pelaksanaan, hanya pengisytiharan kaedah tersebut perlu dilengkapkan dalam bahasa lain. Java memanggil kaedah ini kaedah asli.

Berikut ialah contoh penggunaan kata kunci asli:

Mengisytiharkan kaedah asli dalam kelas Java:

public class NativeDemo {
    public native void printHello();    // native方法声明

    static {
        System.loadLibrary("NativeLibrary");    // 加载本地库
    }

    public static void main(String[] args) {
        NativeDemo demo = new NativeDemo();
        demo.printHello();    // 调用native方法
    }
}

Dalam contoh di atas, kaedah printHello() diisytiharkan sebagai asli kaedah menggunakan kata kunci asli. Dalam blok kod statik kelas, muatkan pustaka asli NativeLibrary melalui kaedah System.loadLibrary(). Kemudian buat objek NativeDemo dalam kaedah main() Apabila kaedah printHello() dipanggil, kod dalam pustaka tempatan akan dilaksanakan. printHello()方法使用native关键字声明为本地方法。在类的静态代码块中,通过System.loadLibrary()方法加载本地库NativeLibrary。然后在main()方法中创建NativeDemo对象,调用printHello()方法时会执行本地库中的代码。

实现native方法的本地库:

#include <stdio.h>
#include "NativeDemo.h"

JNIEXPORT void JNICALL Java_NativeDemo_printHello(JNIEnv *env, jobject obj) {
    printf("Hello from native code!
");
}

上面的示例中,实现了一个本地方法printHello(),在该方法中打印一条信息。该方法的命名规则是Java类名+方法名,并带有特定的参数(JNIEnv*和jobject)。

要编译和运行这个示例,可以按照以下步骤操作:

  1. 编写Java文件:NativeDemo.java
  2. 使用javac命令编译Java文件:javac NativeDemo.java
  3. 使用javah命令生成C头文件:javah -jni NativeDemo
  4. 编写C文件:NativeDemo.c
  5. 使用C编译器编译C文件,并生成本地库:gcc -I"$JAVA_HOME/include" -I"$JAVA_HOME/include/win32" -shared -o NativeLibrary NativeDemo.c
  6. 运行Java程序:java NativeDemo

运行结果会输出Hello from native code!

Pustaka asli yang melaksanakan kaedah asli:

rrreee

Dalam contoh di atas, kaedah asli printHello() dilaksanakan untuk mencetak mesej dalam kaedah ini. Peraturan penamaan kaedah ini ialah nama kelas Java + nama kaedah, dengan parameter tertentu (JNIEnv* dan jobject).


Untuk menyusun dan menjalankan contoh ini, anda boleh mengikuti langkah di bawah:

  1. Tulis fail Java: NativeDemo.java
  2. Gunakan perintah javac untuk susun fail Java: javac NativeDemo.java
  3. Gunakan perintah javah untuk menjana fail pengepala C: javah -jni NativeDemo code>
  4. Tulis fail C: NativeDemo.c
  5. Gunakan pengkompil C untuk menyusun fail C dan menjana pustaka asli: gcc -I"$JAVA_HOME/include" -I" $JAVA_HOME/include/win32" -shared -o NativeLibrary NativeDemo.c
  6. Jalankan program Java: java NativeDemo
🎜The hasil yang sedang dijalankan akan mengeluarkan Hello dari kod asli!, menunjukkan bahawa kaedah asli telah berjaya dipanggil. 🎜🎜Perlu diingatkan bahawa kod pelaksanaan kaedah asli mungkin berbeza pada sistem pengendalian yang berbeza dan perlu diubah suai dengan sewajarnya mengikut situasi sebenar. 🎜🎜Ringkasan: 🎜kata kunci asli membenarkan Java memanggil fungsi yang dilaksanakan dalam bahasa bukan Java, dan merupakan cara untuk Java berinteraksi dengan bahasa asas (seperti C atau C++). Dengan menggunakan kata kunci asli, anda boleh memanggil fungsi yang dilaksanakan oleh bahasa asas dalam Java, seperti fungsi khusus sistem pengendalian, kawalan peranti perkakasan, dsb. Dalam kaedah yang diisytiharkan menggunakan kata kunci asli, fungsi tertentu perlu dilaksanakan melalui perpustakaan tempatan Penulisan dan penggunaan perpustakaan tempatan perlu dikonfigurasikan dan diselaraskan mengikut sistem pengendalian dan keperluan yang berbeza. Menguasai penggunaan kata kunci asli boleh menyediakan program Java dengan rangkaian senario aplikasi yang lebih luas dan potensi pengoptimuman prestasi yang lebih tinggi. 🎜

Atas ialah kandungan terperinci Penggunaan kata kunci asli dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn