javassist

25 篇文章 0 订阅

发现一个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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值