Variable definida 2 veces en el método

Sina:

Estaba revisando algunos métodos en el com.google.android.material.tabs.Tablayoutcuando llegué junto con este método:

private static ColorStateList createColorStateList(int defaultColor, int selectedColor) {
    int[][] states = new int[2][];
    int[] colors = new int[2];
    int i = 0;
    states[i] = SELECTED_STATE_SET;
    colors[i] = selectedColor;
    int i = i + 1;
    states[i] = EMPTY_STATE_SET;
    colors[i] = defaultColor;
    ++i;
    return new ColorStateList(states, colors);
}

Como este método podría ser compilado con la variable i se está definiendo 2 veces? Es parte de todo el mundo el uso de la biblioteca.

suryavanshi rajnish:

En realidad no es así.

Estás mirando en decompilados TabLayout.class archivo

private static ColorStateList createColorStateList(int defaultColor, int selectedColor) {
        int[][] states = new int[2][];
        int[] colors = new int[2];
        int i = 0;
        states[i] = SELECTED_STATE_SET;
        colors[i] = selectedColor;
        int i = i + 1;
        states[i] = EMPTY_STATE_SET;
        colors[i] = defaultColor;
        ++i;
        return new ColorStateList(states, colors);
    }

Pero, si te registras Archivo de origen TabLayout.java obtendrá el código de la siguiente manera.

  private static ColorStateList createColorStateList(int defaultColor, int selectedColor) {
    final int[][] states = new int[2][];
    final int[] colors = new int[2];
    int i = 0;

    states[i] = SELECTED_STATE_SET;
    colors[i] = selectedColor;
    i++;

    // Default enabled state
    states[i] = EMPTY_STATE_SET;
    colors[i] = defaultColor;
    i++;

    return new ColorStateList(states, colors);
  }

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=330180&siteId=1
Recomendado
Clasificación