java - 变量在方法中定义了 2 次

标签 java android

当我想到这个方法时,我正在审查 com.google.android.material.tabs.Tablayout 中的一些方法:

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

How this method could be compiled with variable i being defined 2 times? It is part of the library everyone use.

最佳答案

其实不是这样的。

您正在 checkin 反编译的 TabLayout.class 文件

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

但是,如果您 checkin 源文件 TabLayout.java,您将获得如下代码。

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

关于java - 变量在方法中定义了 2 次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58498882/

相关文章:

java - Spring 启动: IllegalStateException:Duplicate fragment name spring_web

android - 如何将 Ionic 设置为默认呈现 iOS 样式?

java - TestNG - 如何在 testng 自定义可通过电子邮件发送的报告中打印运行时 testng 参数?

java - 变量的 Enum<> 泛型类型的使用

java - Hibernate Neo4j 以键值形式检索结果

java - 序列化时如何创建虚拟 JSON 属性?

android - GestureDetector 无法解析为类型

java - PhoneGap/Cordova 和原生 Android/iOS 后端

android - MPAndroidChart:x 轴上的日期 - 粘性月份和年份

android - 在 CollapsingToolBar 布局 Android 中设置标题和副标题