java中的反射怎么用c实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中的反射怎么用c实现相关的知识,希望对你有一定的参考价值。

不难么?!我认为C语言应该事先不了反射的,即使所谓的实现也不是真正的动态。
Java反射有很多场景:1、最简单的是通过字符串(类名)在运行时加载一个类然后产生调用;2、更复杂的包括从类里面获取方法、field信息,然后产生强制调用。
这些东西依赖的核心是class文件结构,以1为例,java文件编译好了之后他的包路径和其类全名完全一致,所以很容易通过字符串搜索一个类,而C语言编译好了之后都是obj文件,这个二进制文件中不存在什么名字信息,所有的东西都变成二进制码了;第一个还好说,第二种情况则更不可能,Java要想动态获取类中的方法,其前提是class文件中这些方法、field的定义信息都还在,如果不在的话你如何获取?如何调用。以调用为例,假设你想调用add方法,可人家编译好的obj文件中不存在add方法的原始声明啊!C语言中要求调用其他文件中的东东还必须在我这几这边手工写好外部声明的原因与此类似。

总之,我觉得不太可能实现反射。要想实现反射,必须保证其编译后的文件中,源码信息不丢失,否则反不过来。换句话说,具有反射能力的语言比如是依赖虚拟机运行的。注,这里面的虚拟机不仅仅是jre的,.net的framework本质上也是虚拟机。

个人理解.
参考技术A 反射式系统的api,c恐怕需要自己实现,可以看一下开源的asm之类的操作字节码的工具,用C模仿下本回答被提问者采纳

以上是关于java中的反射怎么用c实现的主要内容,如果未能解决你的问题,请参考以下文章

Java反射 在只知道类名的情况下,怎样给其中的私有属性赋值

怎么能通俗易通的了解php中的反射和依赖注入这两个概念

如何利用java反射构造一个类,使之实现一个接口和一些功能

java中的映射是怎样实现的?

如何把一个接口的所有实现类反射出来?

Java反射以及动态代理(下)-- 源码