猿问

c++与java: 如何实现根据结构体定义动态构造java类

java中动态代理有两种实现方式,一个是java本身提供的面向接口的动态代理,一个是cglib动态代理。
cglib动态代理可以动态生成字节码文件,但是我看了这个好像与我的需求不符。
我的需求是这样的:很多orm框架可以自动根据数据库的字段生成实体bean,现在的需求是我想根据结构体的定义动态生成javabean,也就是说任意给定一个结构体的定义,通过某种方式可以生成对等的java实体,这个能够实现吗,有相关参考吗,各位能否指点一下,非常感谢
牛魔王的故事
浏览 399回答 2
2回答

绝地无双

Java有反射可以拿到字段的名称,但是C++的结构体你自己去malloc的话,是一块连续的内存,通过结构体每个字段的大小来确定指针位置。所以应该是不能实现的,因为在源码级别确实你能看到字段,但是在运行时所面对的就是一块一块的内存区域。答主C++很差,会C和Java,如有错误望指正。补:===C++是有反射的,但是结构体只能用结构映射来替代。具体的楼主去研究吧,很久没接触了

小唯快跑啊

让它们具有一模一样的内存布局是不现实的,保证转换过程中不丢失信息就够了。你可以用一种中间格式,将一边的对象序列化,在另一边恢复,或者反过来。你可以试试各种跨语言序列化的方案,比如JSON、Protobuf或者别的什么。各有优劣。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答