发现一个java转OC的开源框架:
https://code.google.com/p/j2objc/
需要把java类直接转成别的语言的类 C++ OC之类的。
javassist可以获取类的一些基本信息,可以先生成一些基本的成员变量和方法名之类的。
// TODO 需要进一步研究下:
http://blog.csdn.net/yadandan520_ya/article/details/3956867
http://lionbule.iteye.com/blog/1330796
http://yonglin4605.iteye.com/blog/1396494
http://qyongkang.iteye.com/blog/963583
// 官方
http://www.csg.is.titech.ac.jp/~chiba/javassist/
http://www.ibm.com/developerworks/cn/java/j-dyn0916/
// 代码模版生成
利用javassist生成ObjectiveC的.h,.m文件
代码格式按照 Google Objective-C Style Guide 中文版 这个还需要格式化下.
http://zh-google-styleguide.readthedocs.org/en/latest/google-objc-styleguide/
生成规则
常量
基本类型常量
【DONE】 生成宏 #define 1. 私有常量 - #define X x 【生成在.m文件中】 2. 其他常量 - #define CLASSNAME_X x 【生成在.h文件中】 sample: 1.private static final int MAX = 3; - #define MAX 3 2.public static final int MAX = 3; - #define Actor_MAX 3
类类型常量
无效
static成员
【DONE】 1.统一在.m文件中声明 2.统一生成 get set访问方法 sample: private static final HorseBean ins=new HorseBean(); - static HorseBean* ins; + (HorseBean *)ins { return ins; } + (void)setIns:(HorseBean *)_ins { SET_FUN(ins, _ins); }
普通的成员变量
【DONE】 1.非基本类型 统一生成 @property(nonatomic, retain) 统一生成 @synthesize 统一生成 self.horseBeanTrusteeshipEd = nil;
成员方法
1.统一生成 - (void)dealloc { [super dealloc]; } dealloc中用宏来统一释放格式生成,malloc创建和释放 【DONE】 2.统一生成 // 初始化成员变量 - (void)initVar { } 3.声称所有成员方法的框架 // 一些NSPoint NSRect类型需要特殊处理下【TODO】 4.统一生成AButton的 _ButtonListener 委托实现 sample:WeaveWindow - (void)hand_up:(AButton *) control x:(short)x y:(short)y { if (control == _mBtnConfirm) { // 确认 if ([self getHasWing]) { [[GameView getInstance].gameSendReq sendReq1653]; [self setHasWing:false]; } else { [Utils sendTopMessageByID:@"weave_tip1"]; } } else if (control == mBtnRefresh) { // 刷新 [[GameView getInstance].gameSendReq sendReq1654]; } else if (control == _mBtnRefreshMax) { // 召唤嫦娥 [[GameView getInstance].gameSendReq sendReq1655]; } }
接口类
1.生成@protocol _ButtonListener <NSObject> 【DONE】 2.获得不了接口方法的参数名 http://diary.fuluchii.me/post/2012-07-10/40030688068 解决方法:【释放默认名 defaultName】
问题
1.enum