从外部类调用IntDef的getter setter

时间:2017-05-21 13:14:22

标签: java android

枚举在运行时很危险,因为它导致内存泄漏所以我使用IntDef。以下是我的代码

public class TestRec {

@IntDef({Mode.DAY_MODE, Mode.NIGHT_MODE})
@Retention(RetentionPolicy.SOURCE)
@interface  Mode {
    int DAY_MODE = 0;
    int NIGHT_MODE = 1;

}

@Mode
static int mCurrentMode = Mode.DAY_MODE;



@Mode
public static int getCurrentMode() {
    return mCurrentMode;
}

public  void setCurrentMode(@Mode int mCurrentMode) {
    this.mCurrentMode = mCurrentMode;
}
}

现在,我想来自外部类的setCurrentMode,我必须将Mode作为参数传递,但我无法这样做。因此我无法从外部类调用setCurrentMode。我错过了什么?

1 个答案:

答案 0 :(得分:1)

由于mCurrentMode是静态字段,而不是实例字段,因此将实例方法作为其setter是没有意义的。另外,将它引用为this.mCurrentMode是没有意义的,因为this将是一个实例,并且它不是实例字段。

您可以将您的setter编写为静态方法,如下所示:

public static void setCurrentMode(@Mode int mCurrentMode) {
    TestRec.mCurrentMode = mCurrentMode;
}

并用

调用它
TestRect.setCurrentMode(whatever);