[英]J2ObjC: How to translate own type
我想為平台特定的代碼創建類適配器。 例如,有2個類:
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]
您可以使用sqlighter (j2objc兼容的庫),該庫使您可以為Android和iOS編寫一次數據庫訪問代碼。 由於它將SQLite庫包裝在兩個平台上,因此切換起來很容易。
如果您確實要實現自己的跨平台API,則通常該應用程序使用定義API的接口或抽象類,並使用諸如Dagger或Java Reflection之類的依賴項注入框架為每個平台加載單獨的實現。
以您的代碼為起點,首先使用抽象的executeSql()方法將SQLiteAdapter定義為抽象類:
public abstract class SQLiteAdapter {
public abstract void executeSql();
}
接下來,定義一個AndroidSQLiteAdapter來擴展SQLiteAdapter並使用特定於Android的代碼實現executeSql():
class AndroidSQLiteAdapter extends SQLiteAdapter {
public void executeSql() {
//use android.database.sqlite
}
}
最后,使用j2objc轉換SQLiteAdapter.java,並修改您的iOS類:
#import "SQLiteAdapter.h"
#import <sqlite3.h>
@interface IosSQLiteAdapter : SQLiteAdapter
@end
@implementation IosSQLiteAdapter
- (void)executeSql {
// Implement using SQLite C API.
}
@end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.