Android上的拳击和取消拳击

时间:2010-10-17 07:38:35

标签: java android unboxing

我正在开发一个Android应用程序。

我有以下界面:

public interface IDBAdapter {

    public enum Table {
        ...
    }
    public int insertItem(Table table, Object item);
    public boolean removeItem(Table table, long rowIndex);
    public Cursor getAllItemsCursor(Table table);
    public Cursor setCursorToItem(Table table, long rowIndex);
    public void getItem(Table table, long rowIndex);
    public boolean updateItem(Table table, long rowIndex, Object item);
}

对于enum Table上定义的每个表,它将是一个表示该表的对象。

我的问题是关于参数Object item。每次我调用其中一种方法时,我都必须取消打开每个项目,我不知道这对Android来说是否会非常慢。

您知道更好的解决方案吗?我不想为每个表创建一个DBAdapter,因为我应该在彼此之间共享SQLiteDatabase对象。

更新

以下是我需要传递给这些方法的对象示例:

public class GameDescriptionData {
    public int gameId;
    public char[] language = new char[5];
    public String name;
    public String description;

    public GameDescriptionData() {
    }
}

感谢。

2 个答案:

答案 0 :(得分:3)

你还没有说过你在表格中加入了什么样的价值观。除非您插入原始值,否则不会涉及任何装箱。例如,如果itemString引用,则不需要装箱,因为它已经是引用。

我建议您在更改之前尝试理想的设计,以避免性能问题。不可否认,我并不完全相信这是一个很好的设计,但如果不了解更多有关您的应用程序的话,很难说。

答案 1 :(得分:1)

我建议strategy pattern为每个预期的项目提供明确的关注。
定义DBAdapterStrategyFactory,根据类的类型将所有策略存储在一起。这样,在Object item上调用操作时,您可以从工厂中提取该策略并共享大部分IDBAdapter代码。

相关问题