我想为特定于平台的代码创建类适配器。 例如,有两个类:
Java:
class SQLiteAdapter {
public void executeSql() {
//use android.database.sqlite
}
}
目标C
@interface SQLiteAdapter : NSObject {}
- (void)executeSql;
@end
如何“教”J2ObjC转换java代码
SQLiteAdapter adapter = new SQLiteAdapter();
adapter.executeSql();
到
SQLiteAdapter* adapter = [SQLiteAdapter alloc];
[adapter executeSql]
答案 0 :(得分:1)
您可以使用sqlighter,这是一个兼容j2objc的库,可让您为Android和iOS编写一次数据库访问代码。由于它将SQLite库包装在两个平台上,因此很容易切换。
如果您真的想要实现自己的跨平台API,通常应用程序使用定义API的接口或抽象类,并使用依赖注入框架(如Dagger)加载每个平台的单独实现,或Java反射。
使用您的代码作为起点,首先使用抽象的executeSql()方法将SQLiteAdapter定义为抽象类:
public abstract class SQLiteAdapter {
public abstract void executeSql();
}
接下来,定义一个扩展SQLiteAdapter并使用Android特定代码实现executeSql()的AndroidSQLiteAdapter:
class AndroidSQLiteAdapter extends SQLiteAdapter {
public void executeSql() {
//use android.database.sqlite
}
}
最后,将SQLiteAdapter.java与j2objc一起翻译,并修改你的iOS类:
#import "SQLiteAdapter.h"
#import <sqlite3.h>
@interface IosSQLiteAdapter : SQLiteAdapter
@end
@implementation IosSQLiteAdapter
- (void)executeSql {
// Implement using SQLite C API.
}
@end