枚举在运行时很危险,因为它导致内存泄漏所以我使用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
。我错过了什么?
答案 0 :(得分:1)
由于mCurrentMode
是静态字段,而不是实例字段,因此将实例方法作为其setter是没有意义的。另外,将它引用为this.mCurrentMode
是没有意义的,因为this
将是一个实例,并且它不是实例字段。
您可以将您的setter编写为静态方法,如下所示:
public static void setCurrentMode(@Mode int mCurrentMode) {
TestRec.mCurrentMode = mCurrentMode;
}
并用
调用它TestRect.setCurrentMode(whatever);