Variable no inicializado, ¿aunque lo estoy? [duplicar

Esta pregunta ya tiene una respuesta aquí:

¿Por qué obtengo un error del compilador "la variable podría no haberse inicializado" en mi bloque de conmutador? 1 respuesta

Contestad

Mike sugirió que agregue un código a la

default:
break;

parte del interruptor. Le agregué una excepción, y no hay necesidad de cambiar nada más. El código ahora se ejecuta con éxito. @¡Gracias chicos

EDITADO PARA READABILIDAD:

Error: "Descripción Tipo de ubicación de ruta de recurso Los mensajes de variable local pueden no haberse inicializado TweetFragment.java / Offline Twitter / src / com / deadpixels / offline / twitter line 78 Problema de Java"

para línea:

int handleStartsAt = messages[i].indexOf('@');

Y el mismo error ocurre dos veces en la línea 80, que es:

ph = messages[i].substring(handleStartsAt, messages[i].length());

En cuanto a sus preguntas, la

default:
break;

line se agregó porque el tipo de tweet int solo debe ser 0, 1 o 2. La función se llama dentro de un entorno controlado y de esa manera estoy seguro de que la llamada no devolverá una excepción.

FIN DE EDICIÓN.

Estoy tratando de crear un método para devolver una matriz de cadenas. Esta matriz de cadenas tiene un tamaño que cambiará según el tipo de mensaje que se pase al método como parámetro. Tengo algunos problemas para hacer esto, ya que aparentemente no estoy inicializando mi variable; aunque, creo que lo soy.

La variable con la que tengo problemas es la matriz de "mensajes".

Tenga en cuenta que no puedo declarar lo siguiente:

String [] messages = new String [arrayLength];

Como en este punto de la llamada, no sé la longitud de la matriz. Y no puedo hacer esto:

String [] messages = null;

después de esto, me encontraré con un error de tiempo de ejecución, a pesar de no recibir alertas en el momento de la compilación.

También, solo para aclarar, habría pensado que:

messages = OfflineTwitter.mentions;

la línea anterior estaría inicializando la variable, "OfflineTwitter.mentions" es una matriz, solo almacenada en una clase diferente.

Aquí está el fragmento de código.

public String[] getHandles (int tweetType) {

    int arrayLength = 0;
    String [] handles;
    String [] messages;

    switch (tweetType) {
    case 0:
        arrayLength = OfflineTwitter.mentions.length;
        messages = OfflineTwitter.mentions;
        break;
    case 1:
        arrayLength = OfflineTwitter.directMessages.length;
        messages = OfflineTwitter.directMessages;
        break;
    case 2:
        arrayLength = OfflineTwitter.allTweets.length;
        messages = OfflineTwitter.allTweets;
    default:
        break;
    }

    handles = new String [arrayLength];

    for (int i = 0; i < arrayLength; i++) {
        int handleStartsAt = messages[i].indexOf('@');
        String ph = "";
        ph = messages[i].substring(handleStartsAt, messages[i].length());
        int handleEndsAt = ph.indexOf(":");
        String sender = ph.substring(0, handleEndsAt);
        handles[i] = sender;
    }

    return handles;
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta