1、关键在于:

  使用的 method id 是 子类的 还是 父类的,而 父类methodID的获取 必须使用 父类的class对象。

2、VC6(CPP)的DLL代码:

#include<stdio.h>
#include "jniZ_TjniFatherMethod.h" JNIEXPORT void JNICALL Java_jniZ_TjniFatherMethod_NativeFunc(JNIEnv * env, jobject obj, jobject _father)
{
// 获取obj中对象的class对象
jclass clazzChild = env->GetObjectClass(_father); // 这里返回的是 子类的 Class对象
jmethodID methodIdChild = env->GetMethodID(clazzChild, "Show", "()V"); // 这里获取的是 子类的 Show()方法的ID jclass clazzFather = env->GetSuperclass(clazzChild); // 获取 父类的 Class对象
jmethodID methodIdFather = env->GetMethodID(clazzFather, "Show", "()V"); // 这里获取的是 父类的 Show()方法的ID // 1、使用的是 子类的 method id
// (1) 两个参数
env->CallVoidMethod(_father, methodIdChild); // 子类的 Show()方法
// (2) 三个参数
env->CallNonvirtualVoidMethod(_father, clazzFather, methodIdChild); // 子类的 Show()方法 // 1、使用的是 父类的 method id
// (3)
env->CallVoidMethod(_father, methodIdFather); // 子类的 Show()方法
// (4)
env->CallNonvirtualVoidMethod(_father, clazzFather, methodIdFather);// 父类的 Show()方法
// (5)
env->CallNonvirtualVoidMethod(_father, clazzChild, methodIdFather);// 父类的 Show()方法 // ZC: 可见,调用 子类 还是 父类的方法,关键看 methpd id 属于谁 ...
}

3、Java代码:

package jniZ;

public class TjniFatherMethod
{
public native void NativeFunc(Tparent _father); public static void main(String[] args)
{
Tchild01 child01 = new Tchild01();
((Tparent)child01).Show(); System.out.println("\n*** *** ***\n"); System.loadLibrary("JniFatherMathod_VC6");
TjniFatherMethod jniZ = new TjniFatherMethod();
jniZ.NativeFunc((Tparent)child01);
}
} class Tparent
{
public void Show()
{
System.out.println("Tparent");
}
} class Tchild01 extends Tparent
{
public void Show()
{
System.out.println("Tchild01");
}
}

4、Java控制台输出:

Tchild01

*** *** ***

Tchild01
Tchild01
Tchild01
Tparent
Tparent

5、

JNI_Z_06_方法的操作(没有String类型的参数)_父类的同名方法的更多相关文章

  1. JNI_Z_07_方法的操作(没有String类型的参数)_参数的传递方式

    1. 2.VC6(CPP)的DLL代码: #include<stdio.h> #include "jniZ_TjniMethod02.h" JNIEXPORT void ...

  2. JNI_Z_05_方法的操作(没有String类型的参数)

    1.步骤: (1).获取 jclass (2).获取 method的id (3).调用 method ZC: 貌似 JNI里面 操作 类的方法,完全是 无视 访问权限的... 然而 static的方法 ...

  3. 关于ASP.NET中WEBAPI中POST请求中FromBody修饰的string类型的参数服务器端获取不到值FromBody空值的简单解决方法

    其实解决办法很简单,就是POST请求的时候,来自实体的参数,content-type:application/x-www-form-urlencoded情况下,是默认按照键值对来解析的,比如param ...

  4. 在LoadRunner中从数组类型的参数随机取值的方法

    在LoadRunner中从数组类型的参数随机取值的方法 使用web_reg_save_param做关联后,有时候会有多个匹配值. 为了模仿用户行为随机取一个值为后续transcation所用,可以使用 ...

  5. C# 通过ServiceStack 操作Redis——String类型的使用及示例

    1.引用Nuget包 ServiceStack.Redis 我这里就用别人已经封装好的Reids操作类,来演示,并附上一些说明 RedisConfigInfo--redis配置文件信息 /// < ...

  6. 再谈怎样以最简单的方法将泛型为String类型的集合或String类型的数组转化为逗号间隔字符串形式

    今天review代码,看见某些大爷在将泛型为String类型的集合或String类型的数组转化为逗号间隔字符串形式时仍然仅仅顾结果不注重过程,"大爷"咱能负点责任吗? 将泛型为St ...

  7. String类型_static成员_动态内存分配_拷贝构造函数_const关键字_友元函数与友元类

    1:String类型 #include <iostream> using namespace std; int main() { //初始化方法 string s1 = "hel ...

  8. Switch能否用String类型做参数?

    switch(expr): 其中,expr参数可以是一个枚举常量(由整型或字符类型实现)或一个整数表达式,其中整数表达式可以是基本类型int或其包装类Integer.由于byte.short和char ...

  9. [Xcode 实际操作]九、实用进阶-(19)重写父类的绘图方法,使用图形上下文绘制自定义图形

    目录:[Swift]Xcode实际操作 本文将演示如何使用图形上下文,绘制自定义图形. 使用快捷键[Command]+[N]创建一个新的类文件. (在项目文件夹[DemoApp]上点击鼠标右键[New ...

随机推荐

  1. jQuery获取textarea中的文本

    今天出了一个bug,用$("#textareaid").text()获取textarea中的信息在IE下没问题,在火狐中居然获取不到信息,经过查阅资料才发现,应该用$(" ...

  2. 巨蟒python全栈开发-第13天 内置函数 匿名函数lambda

    一.今日内容总览 1.内置函数(1):并不是每一个内置函数都是那么常用 上菜:内置函数部分//思维导图:https://www.processon.com/view/link/5b4ee15be4b0 ...

  3. ASP.NET Identity 2集成到MVC5项目--笔记02

    ASP.NET Identity 2集成到MVC5项目--笔记01 ASP.NET Identity 2集成到MVC5项目--笔记02 继上一篇,本篇主要是实现邮件.用户名登陆和登陆前邮件认证. 1. ...

  4. django_视图层/2.0路由层/虚拟环境

  5. jquery补充

  6. 斯坦福大学Andrew Ng - 机器学习笔记(8) -- 推荐系统 & 大规模机器学习 & 图片文字识别

    大概用了一个月,Andrew Ng老师的机器学习视频断断续续看完了,以下是个人学习笔记,入门级别,权当总结.笔记难免有遗漏和误解,欢迎讨论. 鸣谢:中国海洋大学黄海广博士提供课程视频和个人笔记,在此深 ...

  7. Andrew Ng机器学习编程作业:Neural Network Learning

    作业文件: machine-learning-ex4 1. 神经网络 在之前的练习中,我们已经实现了神经网络的前反馈传播算法,并且使用这个算法通过作业给的参数值预测了手写体数字.这个练习中,我们将实现 ...

  8. 配置 Docker 镜像下载的本地 mirror 服务

    Docker registry 工具如今已经非常好的支持了 mirror 功能,使用它能够配置一个本地的 mirror 服务.将 pull 过的镜像 cache 在本地.这样其他主机再次 pull 的 ...

  9. 3个Activity间的切换

    package com.yarin.android.Examples_03_01; import android.app.Activity; import android.content.Intent ...

  10. Kotlin开发Android笔记

    外国人写的一个天气预报的例子,最后有源码下载地址,初学者可以研读一下 http://blog.csdn.net/true100/article/category/6257988 1:Kotlin介绍及 ...