Jni中使用多态
来源:互联网 发布:数据库select什么意思 编辑:程序博客网 时间:2024/05/19 06:38
假设有如下两个类:
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方法,实现了和上面一致的用法。
- Jni中使用多态
- JNI多个线程中使用
- android中使用JNI
- Android中jni使用
- Java中使用JNI
- jni中使用ffmpeg
- web项目中使用jni
- Android中JNI的使用
- Android中jNI的使用
- android中JNI的使用
- 在jni中使用Logcat
- jni中char *的使用
- java中jni的使用。
- Android中JNI的使用
- Android中JNI的使用
- jni中char *的使用
- Android中JNI的使用
- Android中JNI的使用
- 摘抄的经验
- 需求-开发-售后-需求是一条财富信息链
- 搜索速度问题:本地索引与hdfs平台索引,中文搜索与英文搜索速度不一致
- linux下USB驱动开发
- 单链表逆向 c
- Jni中使用多态
- Repeater控件的ItemCreated事件实现权限与ItemCommand事件
- Zoundry Test
- myeclipse6.5代码提示配置
- 测试人生
- (1)设计基于51单片机的电压表
- WinForm"搜索提示效果(不错的)实现" 之 配餐系统的开发
- 给ecmall添加积分购物的功能
- 给ecmall添加购物满100免运费的功能