首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓上的装箱和UnBoxing

安卓上的装箱和UnBoxing
EN

Stack Overflow用户
提问于 2010-10-17 07:38:34
回答 2查看 615关注 0票数 0

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

我有以下界面:

代码语言:javascript
复制
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对象。

更新:

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

代码语言:javascript
复制
public class GameDescriptionData {
    public int gameId;
    public char[] language = new char[5];
    public String name;
    public String description;

    public GameDescriptionData() {
    }
}

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-17 07:55:34

你还没说你要把什么样的值放进表格里。除非插入原始值,否则不会涉及任何装箱。例如,如果itemString引用,那就不需要装箱,因为它已经是引用了。

为了性能考虑,我建议你在改变它之前先尝试一下你的理想设计。诚然,我并不完全相信这是一个伟大的设计开始,但很难说不知道你的应用程序更多。

票数 3
EN

Stack Overflow用户

发布于 2010-10-17 07:55:56

我建议战略模式为每一项预期的项目提供不同的照顾。

定义将根据类类型将所有策略存储在一起的DBAdapterStrategyFactory。这样,在调用Object item上的操作时,您可以从工厂中提取该策略并共享大部分IDBAdapter代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3952428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档