2010-10-17 76 views
0

我正在開發一個Android應用程序。Android上的拳擊和UnBoxing

我有以下接口:

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對象。

UPDATE:

這裏是對象的一個​​例子,我需要傳遞給那些方法:

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

    public GameDescriptionData() { 
    } 
} 

感謝。

回答

3

你還沒有說過你在表格中輸入什麼樣的值。除非你插入原始值,否則將不會涉及任何拳擊。例如,如果itemString引用,則不需要裝箱,因爲它已經是引用了。

我建議你在爲了性能考慮而改變它之前嘗試你的理想設計。無可否認,我並不完全相信這是一個很好的設計,但如果不瞭解更多關於應用的知識,很難說。

+0

感謝您的回答。我用Object item的一個例子更新了我的問題。 – VansFannel 2010-10-17 08:15:15

+0

@VansFannel:那是一個類,不會有任何拳擊參與。 – 2010-10-17 08:25:43

+0

你曾經說過:「無可否認,我並不完全相信這是一個很好的設計,...」你有什麼建議? – VansFannel 2010-10-17 08:40:23

1

我會建議strategy pattern暗示對每個預期項目的不同照顧。
Define DBAdapterStrategyFactory將根據其類別類型將所有策略存儲在一起。這樣,在Object item上調用操作時,您可以從工廠撤回該策略並共享大部分IDBAdapter代碼。