C++ 访问java

如果大家对java 的反射机制有一定的理解。那这个应该不难。要访问类的数据成员。需依如下步骤进行。

1。 获取类的信息。

2。 获取数据成员的ID。

3。 用setTypeField设置属性植。

举例说明:


Cls 获取类信息。 可以通过

Env->GetObjectClass();

Env->findClass()  获取。

此时相当与 java里的 getClass() forName  .class等获得相关的Class对象。

取得属性的fieldID  GetFieldID() changer qisda第一次参数类,第二个  属性名 第三个 签名。

签名规则  这个比较简单。 Boolean  Z

B C S I L F D  对应Java基本数据类型。

对象类型  Ljava/lang/changerString  L+类名

数组 [+类型

最后通过 get/setTypeField设置属性值。

3 C++ 访问类方法。

原理相同。 看例子

获得MethodID. 然后掉CallTypeMethod

4  在C++ 中创建对象叫java 方法

   那需要创建类对象, 获取类臧春杰原创方法ID。 通过CallTypeMethod来进行。

有个关键问题:

    创建类对象要叫类的构造方法。如果叫呢?

看例子。

首先要获得类的构造方法的 ID。 如何获得。构造方法名字 “<init>” 函数签名(参数类型 参数类型)V

通过NewObject(类,methodID, 构造参数)

这样就很清楚了。

5。C++ 访问java 字符串等对象属性。

1。 首先按步骤获取对象引用ID。

2。 根据功能函数,去该对象里的数据操作。

取出str字符串的内容。放到pch里。显示。

也可以创建字符串对象船到java里。这个例子都很清楚里。

编译测试环境  要求 cpp文件要用 c++ 编译器。 推荐 虚拟机的g++ 。如果用gcc 许自行连接C++库。编译时候记的弄好头文件包含。I CPLUS_INCLUDE)_PATH都可以。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值