有没有办法将抑制警告声明为方法的声明?

时间:2013-08-19 12:28:10

标签: java android suppress-warnings

我有一个静态方法,它返回一个Magic Constant的值。 每次我在代码中访问该方法时,都会收到如下警告:

  

必须是以下之一:Toast.LENGTH_SHORT,Toast.LENGTH_LONG

当我将@SuppressWarnings("MagicConstant")添加到我想要访问返回Toast.LENGTH_SHORTToast.LENGTH_LONG的方法的方法时,警告会消失。 但每次我想使用静态方法时,我都必须添加这个抑制警告。这很烦人有没有办法直接将此警告添加到我的方法中,该方法返回两个值中的一个?

我试过了:

@SuppressWarnings("MagicConstant")
    public static int getToastDuration() {
        return ((statement) ? Toast.LENGTH_SHORT : Toast.LENGTH_LONG);
    }

但这不起作用。 我仍然需要将@SuppressWarnings("MagicConstant")添加到我想要使用的方法getToastDuration()

我收到此警告的示例:

public void method() {
Toast.makeText(this,"text",Preferences.getToastDuration()).show();
}

Toast类是Android:http://developer.android.com/reference/android/widget/Toast.html

2 个答案:

答案 0 :(得分:2)

要回答您的实际问题,不,因为警告是在makeText调用上触发的,而Preferences.getToastDuration()调用代码分析器未正确识别int确实返回了其中一个已批准的MagicConstant 1}}值。无论哪种工具给你警告(IDEA?)都无法深入了解代码。我不认为{{1}}警告是标准的,我会为此打开一个错误报告。

答案 1 :(得分:0)

不确定这是否有效......

将攻击方法包含在另一个方法中:

class Preferences
{
    @SuppressWarnings("MagicConstant")
    public static int getToastDuration()
    {
        return _getToastDuration();
    }

    private static int _getToastDuration()
    {
        return ((statement) ? Toast.LENGTH_SHORT : Toast.LENGTH_LONG);
    }
}