Jni中使用多态

原创 2011年01月15日 23:42:00

      假设有如下两个类:

   1: public class Foo {
   2:  
   3: }
   4:  
   5: public class Bar extends Foo {
   6:     public void Print() {
   7:         System.out.println("Bar::Print().");
   8:     }
   9: }

      又有如下方法:

   1: public Foo Current() {
   2:     return (Foo) new Bar();
   3: }

      在Java中,要想将Current返回的对象当作Bar对象用,必须按如下方式:

   1: Foo foo = Current();
   2: ((Bar) foo).Print();

      如果是在Jni中,该如何实现这一调用呢?经过试验,按如下调用即可:

   1: midCurrent = (*env)->GetMethodID(env, clsTestPoly, "Current", "()LTestPolymorphism/Foo;");
   2: FAILED_RETURN(midCurrent);
   3:  
   4: objFoo = (*env)->CallObjectMethod(env, objmTestPoly, midCurrent);
   5: FAILED_RETURN(objFoo);
   6:  
   7: clsBar = (*env)->FindClass(env, "TestPolymorphism/Bar");
   8: FAILED_RETURN(clsBar);
   9:  
  10: midPrint = (*env)->GetMethodID(env, clsBar, "Print", "()V");
  11: FAILED_RETURN(midPrint);
  12:  
  13: (*env)->CallObjectMethod(env, objFoo, midPrint);

      第1行用来获取Current函数的id号;

      第4行用来调用Current获取Foo对象(实际上是Bar对象);

      第7行用来获取Bar类的实体;

      第10行用来获取Bar对象的Print方法;

      第13行用来调用Foo对象(实际上是Bar对象)的Print方法,实现了和上面一致的用法。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

使用抽象方法实现多态

  • 2009-04-22 17:02
  • 66KB
  • 下载

final关键字、多态、抽象类、接口的特点及其使用

1:final关键字 (1)是最终的意思,可以修饰类,方法,变量。 (2)特点: A:它修饰的类,不能被继承。 B:它修饰的方法,不能被重写。 ...

OC学习笔记(9)Object-C多态的使用

1、基类ASShape //.h #import @interface ASShape : NSObject -(void) draw; @end //.m #import "ASShape.h"...

多态和虚函数的使用

一、虚函数: 在某基类中声明为 virtual 并在一个或多个派生类中被重新定义的成员函数,用法格式为:virtual 函数返回类型 函数名(参数表) {函数体};实现多态性,通过指向派生类的基类...

c++中类的多态和虚函数的使用

C++的三大特性:封装、继承、多态。以前学的时候自己没去总结,记得在一本c++入门的书讲得还是比较清楚。今天上网找了一下多态,找到下面这篇文章写得比较清晰。 http://pcedu.pconlin...

118_容器_自定义泛型_深入2_无多态_通配符_无泛型数组_jdk7泛型使用

通配符 通配符的测试-TestWildcard package genericity_wildcard;import java.util.ArrayList; import java.util.Lis...

java中interface使用之多态接口动态加载

转载网址:http://blog.sina.com.cn/s/blog_48c0812c0101alaz.html 题目:编写一个通用程序,用来计算每一种交通工具运行1000公里所需的时间,已知每种...

多态使用缺陷

多态使用时的缺陷主要分两种情形 “覆盖”private方法 调用域与静态方法 由于调用域和静态方法十分相似,先考虑调用域与“覆盖”private方法的情形。我写了个四层继承关系的程序表现这种陷阱,如下...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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