Search code examples
javaandroidunboxing

Boxing and UnBoxing on Android


I'm developing an Android application.

I have the following interface:

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);
}

For each table defined on enum Table, it will be an object that represents that table.

My problem is about parameter Object item. I will have to unbox each item every time I call one of this methods and I don't know if this will be very slow for Android.

Do you know a better solution? I don't want to create a DBAdapter for each table because I should share SQLiteDatabase object between each other.

UPDATE:

Here is an example of object that I need to pass to those methods:

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

    public GameDescriptionData() {
    }
}

Thanks.


Solution

  • You haven't said what kind of values you're putting into the tables. Unless you're inserting primitive values, there won't be any boxing involved. For example, if item is a String reference, that doesn't need boxing because it's a reference already.

    I suggest you try your ideal design before changing it for the sake of performance concerns. Admittedly I'm not entirely convinced this is a great design to start with, but it's hard to say without knowing more about your application.