5

我有一个静态方法,它返回一个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

4

2 回答 2

2

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

于 2013-08-19T12:45:24.993 回答
0

不确定这是否可行...

将 affending 方法包装在另一个方法中:

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

    private static int _getToastDuration()
    {
        return ((statement) ? Toast.LENGTH_SHORT : Toast.LENGTH_LONG);
    }
}
于 2013-08-19T13:25:28.237 回答