gpt4 book ai didi

java - J2ObjC:如何翻译自己的类型

转载 作者:行者123 更新时间:2023-12-02 11:41:16 24 4
gpt4 key购买 nike

我想为特定于平台的代码创建类适配器。例如有2个类:

Java:

class SQLiteAdapter {
public void executeSql() {
//use android.database.sqlite
}
}

objective-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 的接口(interface)或抽象类,并使用像 Dagger 这样的依赖注入(inject)框架加载每个平台的单独实现。 ,或Java反射。

使用您的代码作为起点,首先将 SQLiteAdapter 定义为抽象类,并使用抽象的executeSql() 方法:

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

关于java - J2ObjC:如何翻译自己的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48527006/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com