DELPHI 开发JNI 之 JAVA 对象Integer应用

DELPHI 开发JNI JAVA 对象Integer应用

前言:

DELPHI 的教程很多,在这里不加赘述,着重介绍JAVA里的常用对象的调用,

公司有这方面的功能需求,用了2天的时间研究了下JNI相关的东西.把我在研究过程中比较挠头的一些问题的解决方法发上来. 主要介绍 JAVA中常用对象的在开发JNI时候的应用.

 

    Integer 方法应用

JAVA Integer int 是不一样的. 所以 JNI 调用JAVA 的方法的时候要注意下. 如果是 INT 类型的 GetMethodID 的时候 可以直接用 “I” 来表示. 如果是 INTEGER 就需要用 java/lang/Integer 而且在传入 integer 类型的参数需要初始化一个Integer JAVA对象作为参数传入

例子:

一个TREEMAP对象, JAVA 定义为MAP<Integer,String> ,调用 TREEMAP对象的PUT 方法 PUT MAP 一个 INTEGER STRING 类型的数据

Var

  JVM: TJNIEnv;

  bmMAPClass :JClass;

  bmMAPmid :JMethodID;

  bmMAPOBJ : jObject;

  JFVS : jString ;

JIntClass : JClass;

JIntmid : JMethodID;

JIntObj : jObject;

javaargs  : array[0..0] of JValue; //调用方法时的参数

JFVI : integer

Begin

  //jvm 初始化 

//调用Integer(int value)构造函数初始化INTEGER 对象

JFVI := 1;

JFVS := ‘TestString’;

JIntClass := JVM.FindClass('java/lang/Integer');

JIntmid := JVM.GetMethodID(JIntClass,'<init>','(I)V');

javaargs[0].i := JFVI;

JIntObj := JVM.NewObjecta(JIntClass,JIntmid,@javaargs); 

{javaargs参数使用 NewObjecta 方法 来建立对象尝试了很多次就这个好用}

//MAP 的操作

//bmMAPClass:= JVM.FindClass('java/util/TreeMap');

//bmMAPOBJ初始化

bmMAPmid := JVM.GetMethodID(bmMAPSubClass,'put','(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;');  //获得PUT 方法的METHODID

JVM.CallNonvirtualObjectMethod(bmMAPSubOBJ,bmMAPSubClass,bmMAPSubmid,[JIntObj, JFVS]);  //调用PUT方法

end;

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值