在Java中,extern
關鍵字通常用于聲明一個外部變量或方法。然而,需要注意的是,Java本身并沒有直接支持extern
關鍵字,因為它是C和C++語言中的概念。在Java中,我們通常通過其他方式來實現類似的功能。
盡管如此,如果你是在閱讀或使用C或C++編寫的代碼,并希望與Java代碼進行交互,那么你可能會在Java代碼中使用JNI(Java Native Interface)來調用C或C++中的函數或訪問其變量。在這種情況下,你可以將C或C++中的函數聲明為extern
,以指示它們是由其他語言(如Java)調用的。
在C或C++中,extern
的聲明方式通常如下:
extern int global_variable;
這表示有一個名為global_variable
的全局變量,它在其他地方(可能是另一個源文件)被定義。
2. 聲明全局函數:
extern void some_function();
這表示有一個名為some_function
的全局函數,它在其他地方被定義。
3. 在C++中使用extern "C"
:
當你在C++代碼中調用C語言編寫的函數時,為了防止C++的名稱修飾(name mangling),你可以使用extern "C"
來聲明這些函數。這樣,C++編譯器就會知道這些函數是用C語言風格鏈接的。
extern "C" {
void some_c_function();
}
然后,在C++代碼中,你可以像調用普通C++函數一樣調用some_c_function()
。
回到Java,如果你想要調用C或C++中的函數或訪問其變量,你需要使用JNI。這通常涉及創建一個Java類,該類聲明了本地方法(使用native
關鍵字),然后使用Java的System.loadLibrary()
或System.load()
方法加載包含這些本地方法實現的庫。
示例:
public class NativeLibrary {
static {
System.loadLibrary("native_library");
}
public native void someNativeMethod();
}
在這個例子中,someNativeMethod()
是一個本地方法,它在名為native_library
的庫中被實現。