Java:如何限制可以传递给方法的参数值

Lis*_*nne 5 java

假设我有一个方法,以一个int作为参数,

假设该方法只需要值0,1,2不是其他int.

有没有办法"强制"该方法只接受0,1,2?

aio*_*obe 7

你将不得不创建一个自定义的数据类型,只能取值0,12.你不能使用普通的int.

在这种情况下,您可以使用enum:

enum ZeroOneOrTwo {
    ZERO(0),
    ONE(1),
    TWO(2);
    public final int val;
    private ZeroOneOrTwo(int val) {
        this.val = val;
    }
}
Run Code Online (Sandbox Code Playgroud)

并按如下方式使用:

void myMethod(ZeroOneOrTwo arg) {
    System.out.println("Int value: " + arg.val);
}
Run Code Online (Sandbox Code Playgroud)

如果你被迫接受一个int参数(例如,如果你正在实现一个接口),那么IllegalArgumentException如果给定的值超出范围,你可以求助于抛出一个参数.但通常你会想让编译器捕获问题而不是在运行时处理它.