【JNI】JNI中java类型的简写

原创 2012年03月26日 21:02:47
     在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[],另外。引用类型(除基本类型的数组外)的标示最后都有个";"

相关文章推荐

JNI中java类型的简写,getMethod等参数的说明

Jni中java类型的简写,getMethod等方法参数的说明

Java与JNI数据类型对照表

  • 2015年04月14日 14:38
  • 185KB
  • 下载

Android中JNI使用详解(4)---Java与C之间数据类型转换

Jni中基本类型转换对应的表格 Java类型 本地类型 说明 boolean jboolean 无符号,8位 byte jbyte 无符号,8位 ...

Java层与Jni层的字节数组传递【适用于其他基本类型数组】

Android开发中,经常会在Java代码与Jni层之间传递数组(byte[]),一个典型的应用是Java层把需要发送给客户端的数据流传递到Jni层,由Jni层的Socket代码发送出去,当然,Jni...

Android JNI Java类型签名

Android Java 类型签名。JNI提供了Java和native代码相互交互的接口,当我们在底层访问Java类的域(成员变量)或者方法时,需要提供域或者方法描述符,比如,下面代码,...

Jni中C++和Java的数据类型的对应关系

Jni中C++和Java的参数传递 如何使用JNI的一些基本方法和过程在网上多如牛毛,如果你对Jni不甚了解,不知道Jni是做什么的,如何建立一个基本的jni程序,或许可以参考下面下面这些文章:...

JNI 中 JAVA 与 C 数据类型装换 (3)

最近公司里要用JNI技术,用java去调用已经写好的本地DLL库。之前自己也没接触过相关技术,其中花了大部分时间在调试改错上面,网上对于错误的解决方案也不多,现在项目接近完工,自己也该把其中碰到的一些...
  • yan8024
  • yan8024
  • 2014年01月21日 14:43
  • 825

Java基础知识——JNI入门介绍(类型转换)

Java类型和本地类型对应     在如下情况下,需 要在本地方法中应用java对象的引用,就会用到类型之间的转换:   1)java方法里面将参数传入本地方法;   2)在本地方法里面创建ja...

JNI学习--Java和C、C++之间的数据类型映射之string

本文主要的内容来源于Java Native Interface: Programmer's Guide and Specification中的第三章的内容。可通过http://java.sun.c...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【JNI】JNI中java类型的简写
举报原因:
原因补充:

(最多只允许输入30个字)