Бокс и UnBoxing на Android

Я разрабатываю приложение для 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 ответа

Решение

Вы не сказали, какие значения вы помещаете в таблицы. Если вы не вставляете примитивные значения, бокс не будет задействован. Например, если item это String ссылка, которая не нуждается в боксе, потому что это уже ссылка.

Я предлагаю вам попробовать свой идеальный дизайн, прежде чем менять его из соображений производительности. По общему признанию, я не совсем уверен, что это отличный дизайн для начала, но трудно сказать, не зная больше о вашем приложении.

Я бы предложил шаблон стратегии, который бы подразумевал особую заботу о каждом ожидаемом предмете.
определять DBAdapterStrategyFactory это будет хранить все стратегии вместе на основе их типа класса. Таким образом, при вызове операций на Object item Вы можете получить эту стратегию с завода и поделиться большей частью IDBAdapter код.

Другие вопросы по тегам