how to reinitialize a String[] with constants in java?

I have a switch case over several ints in java and in every case i want to redifine the String[] i set in the beginning of the method so i don't have to create several String[] variables.

Here is an examples:

switch (datacontentprovider.sUriMatcher.match(uri)) {
        case datacontentprovider.LOCATION:

            String[] locationProjection = {
                    datacontentprovider.DatabaseHelper.COLUMN_LATITUDE,
                    datacontentprovider.DatabaseHelper.COLUMN_LONGITUDE,
                    datacontentprovider.DatabaseHelper.COLUMN_TIME,
                    datacontentprovider.DatabaseHelper.COLUMN_ACCURACY,
                    datacontentprovider.DatabaseHelper.COLUMN_PROVIDER };
            break;

        case datacontentprovider.PICTURE:

            String[] pictureProjection = {
                    datacontentprovider.DatabaseHelper.COLUMN_PIC_LATITUDE,
                    datacontentprovider.DatabaseHelper.COLUMN_PIC_LONGITUDE,
                    datacontentprovider.DatabaseHelper.COLUMN_PIC_TIME,
                    datacontentprovider.DatabaseHelper.COLUMN_PIC_ACCURACY,
                    datacontentprovider.DatabaseHelper.COLUMN_PIC_URL };

            break;

        case datacontentprovider.ACCELEROMETER:

            String[] accelerometerProjection = {
                    datacontentprovider.DatabaseHelper.COLUMN_ACCELEROMETER_X,
                    datacontentprovider.DatabaseHelper.COLUMN_ACCELEROMETER_Y,
                    datacontentprovider.DatabaseHelper.COLUMN_ACCELEROMETER_Z,
                    datacontentprovider.DatabaseHelper.COLUMN_ACCELEROMETER_TIME, };
            break;

        case datacontentprovider.SOUND:

            String[] amplitudeProjection = {
                    datacontentprovider.DatabaseHelper.COLUMN_AMPLITUDE_AMPLITUDE,
                    datacontentprovider.DatabaseHelper.COLUMN_AMPLITUDE_TIME };

            break;

        case datacontentprovider.BATTERY:

            String[] batteryProjection = {
                    datacontentprovider.DatabaseHelper.COLUMN_BATTERY_STATUS,
                    datacontentprovider.DatabaseHelper.COLUMN_BATTERY_ISCHARGING,
                    datacontentprovider.DatabaseHelper.COLUMN_BATTERY_CHARGEPLUG,
                    datacontentprovider.DatabaseHelper.COLUMN_BATTERY_USBCHARGE,
                    datacontentprovider.DatabaseHelper.COLUMN_BATTERY_ACCHARGE,
                    datacontentprovider.DatabaseHelper.COLUMN_BATTERY_LEVEL,
                    datacontentprovider.DatabaseHelper.COLUMN_BATTERY_SCALE,
                    datacontentprovider.DatabaseHelper.COLUMN_BATTERY_BATTERYPCT,
                    datacontentprovider.DatabaseHelper.COLUMN_BATTERY_TIME};

            break;

        case datacontentprovider.ORIENTATION:

            String[] orientationProjection = {
                    datacontentprovider.DatabaseHelper.COLUMN_ORIENTATION_AZIMUT,
                    datacontentprovider.DatabaseHelper.COLUMN_ORIENTATION_TIME };
            break;

        case datacontentprovider.LIGHT:

            String[] lightProjection = {
                    datacontentprovider.DatabaseHelper.COLUMN_LIGHT_LUMINOSITY,
                    datacontentprovider.DatabaseHelper.COLUMN_LIGHT_TIME };
            break;

        default:
            throw new SQLException("Failed to get table data " + uri);
        }

but in java, at least, i can't create the String[] variable and than reinitialize it inside every case for what i want. Is there a better way to avoid all this replication? If it was i could have all the different attributions in the same variable.

Jon Skeet
people
quotationmark

You absolutely can reinitialize a string variable - but at the moment you're redeclaring it. Instead of:

String[] locationProjection = {
    ...
};

you want:

locationProjection = new String[] { 
    ...
};

It's not entirely clear whether that's a good idea or not, mind you - you may want to use a List<T> and create an unmodifiable list with each set of values. It seems an odd pattern to me... what are you trying to use this for? There may be a better approach.

people

See more on this question at Stackoverflow