`
iaiai
  • 浏览: 2210912 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JNI中java类型的简写

 
阅读更多
在JNI中,当我们使用GetFieldID/GetStaticFieldID或GetMethodID/GetStaticMethodID及定义JNINativeMethod等时,我们需要表示成员变量的类型,或函数传入参数或返回的类型。JNI把Field的类型,或函数传入参数或返回值的类型进行简写以char*的形式进行表示。

对于成员变量,直接用java类型的简写表示成员变量的类型就可以
比如:"I"表示该成员变量是Int类型
           "Ljava/lang/String;"表示该成员变量是String类型

示例1:
               jfieldID str = (env)->GetFieldID(objectClass,"name","Ljava/lang/String;");
               jfieldID ival = (env)->GetFieldID(objectClass,"serial","I");
     对于成员函数,是以"(*)+"形式表示函数的有哪些传入参数,传入参数的类型,返回值的类型。"()" 中的字符表示传入参数,后面的则代表返回值。
     例如:
           "()V" 就表示void Func();
           "(II)V" 表示 void Func(int, int);
           "(Ljava/lang/String;Ljava/lang/String;)I".表示 int Func(String,String)
    示例2:
static JNINativeMethod gPowerManagerServiceMethods[] = {
/* name, signature, funcPtr */
{ "nativeInit", "()V",
(void*) android_server_PowerManagerService_nativeInit },
{ "nativeSetPowerState", "(ZZ)V",
(void*) android_server_PowerManagerService_nativeSetPowerState },
{ "nativeStartSurfaceFlingerAnimation", "(I)V",
(void*) android_server_PowerManagerService_nativeStartSurfaceFlingerAnimation },
};
      关于类型简写,首先请参照下表。

表A
Java 类型符号
Boolean Z
Byte B
Char C
Short S
Int I
Long L
Float F
Double D
Void V
objects对象 以"L"开头,以";"结尾,中间是用"/" 隔开的包及类名。比如:Ljava/lang/String;如果是嵌套类,则用$来表示嵌套。例如 "(Ljava/lang/String;Landroid/os/FileUtils$FileStatus;)Z"


另外数组类型的简写,则用"["加上如表A所示的对应类型的简写形式进行表示就可以了,
比如:[I表示 int [];[L/java/lang/objects;表示Objects[],另外。引用类型(除基本类型的数组外)的标示最后都有个";"

android职业交流QQ 群,有兴趣的可以一起来多搞搞技术、职业交流,互相学习、提高,互通好的职业信息,群号:104286694
分享到:
评论

相关推荐

    Java使用jni接口调用C++动态库.docx

    JNI 是 Java Native Interface 的缩写,它是一个标准的 API,允许 Java 代码与本地应用程序代码进行交互。JNI 提供了一个机制,Java 应用程序可以在运行时加载和使用本地库,例如 C++ 动态库。 二、Java 调用 C++ ...

    jni回调Java层函数示例

    NI是Java Native Interface的缩写,是Java平台的重要特性,使得Java代码可以方便地与C/C++代码...本文主要给出一份示例代码(工程文件见附件),描述如何在Android的JNI层开启一个线程,并在线程中回调Java层的函数。

    JNI规范,c和java的融合接口

    JNI是Java Native Interface的缩写,中文为JAVA本地调用。从Java1.1开始,Java Native Interface(JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是...

    [JAVA]使用JNI技术实现JAVA程序调用dll

    JNI 是 Java Native Interface(Java 本地接口)的缩写,本地是相对于 Java 程序来说的,指直接运行在操作系统之上,與操作系统直接交互的程序。在 JNI 出现的初期是为了 Java 程序与本地已编译语言,尤其是 C 和 ...

    通熟易懂的JNI教材.ppt

    JNI是Java Native Interface的缩写,通过使用 Java本地接口书写程序,可以确保代码在不同的平台上方便移植。 从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是...

    JNI 完整高清手册(英文版)

    例如,Java中的整型(int)和C语言中的整型(int)是不同的,JNI要求在传递数据时必须明确转换数据类型,以避免出现数据不匹配的问题。 错误处理方面,JNI要求开发者在实现本地方法时要处理好异常,确保在本地代码...

    JNI实现的DEMO Java调用VC编写的DLL,对应于Linux .SO

    标题中的“JNI实现的DEMO Java调用VC编写的DLL,对应于Linux .SO”指的是一个使用Java Native Interface (JNI) 技术的示例,该示例展示了如何在Java程序中调用由Visual C++ (VC) 编译生成的动态链接库(DLL) 文件,...

    帮你快速上手JNI技术

    4. 传递参数和返回结果:JNI支持Java基本数据类型的传递,字符串和基本类型数组的传递。如何在Java与本地方法之间传递参数和接收返回值是JNI编程的一个重要部分。 5. 访问对象的变量和方法:包括访问对象实例变量、...

    启动时间,jni,时间

    JNI是Java Native Interface的缩写,它是一种标准的应用程序编程接口(API),允许Java代码与其他语言编写的代码进行交互,例如C或C++。在Android开发中,JNI特别重要,因为它使得开发者能够利用原生代码来实现高...

    android jni(demo) 基于windows平台

    NDK是Android Native Development Kit的缩写,它提供了一系列的工具,让开发者可以使用C/C++编写部分应用程序,然后将其与Java代码一起打包到Android应用中。下载并解压NDK后,在Cygwin的.bash_profile文件中设置NDK...

    JNI详解技术.ppt

    JNI是Java Native Interface的缩写,它为Java应用程序提供了一个标准的接口,能够调用本地(非Java)代码,同时也允许本地代码调用Java方法。通过JNI,开发者可以在Java程序中使用C/C++代码,以获得更好的性能或...

    Android JNI层实现扫描sd卡mp3文件

    Java字符串在JNI中表示为`jstring`类型,需要使用`JNIEnv`接口提供的`GetStringUTFChars`和`ReleaseStringUTFChars`函数来转换和释放。 8. **错误处理**:在C/C++代码中,需要适当地处理可能发生的错误,如打开目录...

    android_jni_demo

    Android 开发中JNI的使用总结, JNI是Java Native Interface 的缩写,意为java本地接口, 使用JNI技术可以使得java语言与其它开发语言(如 C、C++ 和汇编语言)编写的应用程序或库进行相互操作。Android系统中的JNI运行...

    android jni 加密demo

    在Android开发中,JNI(Java Native Interface)是一个关键的技术,允许Java代码和其他语言写的代码进行交互,通常是C++或C。在这个"android jni 加密demo"中,开发者使用JNI来实现多种加密算法,包括RSA、3DES、AES...

    Qt on Android with JNI

    在Android开发中,JNI是Java Native Interface的缩写,它是Java提供的一种标准编程接口,用于Java代码和C或C++代码之间的互操作。在Qt环境下开发Android应用时,不可避免地需要调用特定的Android功能,这时就需要...

    JNI_KindleService

    在描述中提到的"JNL library"可能是"Java Kindle Library"的缩写,这是一个专为与Kindle设备通信而设计的Java库。这个库可能包含了处理设备连接、数据传输、命令发送等操作的函数和类。JNL库的存在简化了Java开发者...

    hello-jni.tgz

    JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)。从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地...

    AndroidStudio_3.0版本JNI开发

    JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)。从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地...

    java中常用英文简写全拼与中文意思.pdf

    Java编程语言中包含众多的英文缩写,这些缩写代表了不同的概念和技术,对于理解和使用Java至关重要。以下是一些核心的Java相关英文简写的详细解释: 1. API(Application Programming Interface):应用编程接口,...

Global site tag (gtag.js) - Google Analytics