如何在Java中只允许某些值作为方法的参数?
2022-09-04 23:55:11
我想写一个只接受参数某些值的方法,比如在Android的类中。您只能使用 或 作为方法 的持续时间。我看了一下该类的源代码,但在那里什么也没找到。我怎样才能做到这一点?Toast
Toast.LENGTH_SHORT
Toast.LENGTH_LONG
makeText(Context context, int resId, int duration)
Toast
我想写一个只接受参数某些值的方法,比如在Android的类中。您只能使用 或 作为方法 的持续时间。我看了一下该类的源代码,但在那里什么也没找到。我怎样才能做到这一点?Toast
Toast.LENGTH_SHORT
Toast.LENGTH_LONG
makeText(Context context, int resId, int duration)
Toast
您可以为方法使用@IntDef或@StringDef批注,如下所示:
@Retention(SOURCE)
@IntDef({NAVIGATION_MODE_STANDARD, NAVIGATION_MODE_LIST, NAVIGATION_MODE_TABS})
public @interface NavigationMode {}
public static final int NAVIGATION_MODE_STANDARD = 0;
public static final int NAVIGATION_MODE_LIST = 1;
public static final int NAVIGATION_MODE_TABS = 2;
...
public abstract void setNavigationMode(@NavigationMode int mode);
@NavigationMode
public abstract int getNavigationMode();
使用 Java 教程中的枚举类型,
枚举类型是一种特殊的数据类型,它使变量能够成为一组预定义的常量。该变量必须等于为其预定义的值之一。常见示例包括罗盘方向(北、南、东和西的值)和星期几。
例如,
public enum MyEnum {
ONE, TWO;
}
public static void myMethod(MyEnum a) {
// a must be MyEnum.ONE or MyEnum.TWO (in this example)
}
编辑
要从枚举类型中获取 String(s),您可以添加字段级别值(必须是编译时间常量),如下所示:
public enum MyEnum {
ONE("uno"), TWO("dos");
MyEnum(String v) {
value = v;
}
private String value;
public String getValue() {
return value;
}
}