【问题标题】:supress warnings: dead code and conditional compilation抑制警告:死代码和条件编译
【发布时间】:2014-03-21 17:48:18
【问题描述】:

我经常声明一些常量来有条件地编译/不编译代码块。我将这些常量放在一个类中,然后在整个(大)应用程序代码中使用它们。

Conf.java

    public static final int GUI_ACTIONBAR_HEIGHT=0;

其他地方(示例):

super.onCreate(savedInstanceState, Conf.GUI_ACTIONBAR_HEIGHT==0?R.layout.activity_funq_play_noactionbar:R.layout.activity_funq_play, true);

但是,在所示情况下,这会触发警告“comparing identical expressions”。这显然是我可以忍受的,但我想知道是否有任何 SupressWarning 魔法可以摆脱它(以及源代码中的黄色警告图标)。

@SupressWarnings ("unused") 

没有效果。

【问题讨论】:

    标签: android conditional-compilation dead-code


    【解决方案1】:

    这是一个 Java 编译警告,打开/关闭它实际上取决于 IDE。假设您使用的是 Eclipse,您可以通过 Preferences > Java > Compiler > Errors/Warning > Comparing identical values ('x==x') 'ignore' 导航到配置,这应该会关闭它。

    【讨论】:

      【解决方案2】:

      适用于非静态方法的丑陋解决方法:

      1. 将静态 MyClass.CONSTANT 访问替换为 this.CONSTANT 访问。
      2. 然后您将收到一个“应以静态方式访问静态字段 MyClass.CONSTANT” 警告。
      3. 可以使用 @SuppressWarnings("static-access") 抑制此警告,并且不再有比较警告。

      在您的示例中,这给出了:

      @SuppressWarnings("static-access")
      public void onCreate(Object p1, Object p2, boolean b) {
          super.onCreate(savedInstanceState, this.GUI_ACTIONBAR_HEIGHT==0?R.layout.activity_funq_play_noactionbar:R.layout.activity_funq_play, true);
      }
      

      此解决方法仅适用于非静态方法。

      【讨论】:

      • 感谢您的建议,但是我的用例是一个包含不同最终布尔值的“配置”类,因此我在一个集中的位置配置了许多应用程序范围的调整!
      猜你喜欢
      • 2010-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 2017-04-11
      • 1970-01-01
      • 2011-02-20
      • 2021-11-03
      相关资源
      最近更新 更多