| Java类型 | Java本地C/C++类型 | 描述 |
| Boolean | Jboolean | C/C++8位整型 |
| Byte | Jbyte | C/C++带符号的8位整型 |
| Char | Jchar | C/C++无符号的16位整型 |
| Short | Jshort | C/C++带符号的16位整型 |
| Int | Jint | C/C++带符号的32位整型 |
| Long | Jlong | C/C++带符号的64位整型e |
| Float | Jfloat | C/C++32位浮点型 |
| Double | Jdouble | C/C++64位浮点型 |
| Object | Jobject | 任何Java对象,或者没有对应java类型的对象 |
| Class | Jclass | Class对象 |
| String | Jstring | 字符串对象 |
| Object[] | jobjectArray | 任何对象的数组 |
| boolean[] | jbooleanArray | 布尔型数组 |
| byte[] | jbyteArray | 比特型数组 |
| char[] | jcharArray | 字符型数组 |
| short[] | jshortArray | 短整型数组 |
| int[] | jintArray | 整型数组 |
| long[] | jlongArray | 长整型数组 |
| float[] | jfloatArray | 浮点型数组 |
| double[] | jdoubleArray | 双浮点型数组 |
class Prompt {
// native method that prints a prompt and reads a line
private native String getLine(String prompt);
public static void main(String args[]) {
Prompt p = new Prompt();
String input = p.getLine("Type a line: ");
System.out.println("User typed: " + input);
}
static {
System.loadLibrary("Prompt");
}
}
#include "Prompt.h"
#include <iostream>
JNIEXPORT jstring JNICALL Java_Prompt_getLine(JNIEnv *env, jobject obj, jstring prompt)
{
const char* str;
str = env->GetStringUTFChars(prompt, false);
if(str == NULL) {
return NULL; /* OutOfMemoryError already thrown */
}
std::cout << str << std::endl;
env->ReleaseStringUTFChars(prompt, str);
char* tmpstr = "return string succeeded";
jstring rtstr = env->NewStringUTF(tmpstr);//返回的时候,要生成一个jstring类型的对象
return rtstr;
}
本文详细介绍了JNI(Java Native Interface)中Java类型与C/C++类型的映射规则,并通过具体示例展示了如何处理String类型的传递及返回。
1045

被折叠的 条评论
为什么被折叠?



