抑制警告:死代码和条件编译

时间:2014-03-21 17:48:18

标签: android conditional-compilation dead-code

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

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") 

没有做到这一点。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

一种适用于非静态方法的丑陋变通方法:

  1. MyClass.CONSTANT访问权限替换静态this.CONSTANT访问权限。
  2. 您将拥有一个"静态字段MyClass.CONSTANT应以静态方式访问" 警告。
  3. 可以使用@SuppressWarnings("static-access")并且不再存在比较警告来抑制此警告。
  4. 在你的例子中,这给出了:

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

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