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.
 
  
                     
                        
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.
 
                    See more on this question at Stackoverflow