Java: how to limit argument's values that can be passed to a method
java
Solution
You would have to create a custom data type that can only take the values `0`, `1` and `2`. You can't use an ordinary `int`.
In this case you could use an `enum`:
enum ZeroOneOrTwo {
ZERO(0),
ONE(1),
TWO(2);
public final int val;
private ZeroOneOrTwo(int val) {
this.val = val;
}
}
and use it as follows:
void myMethod(ZeroOneOrTwo arg) {
System.out.println("Int value: " + arg.val);
}
If you're forced to take an `int` as argument (if you're implementing an interface for instance) you can resort to throwing an `IllegalArgumentException` if the given value is out of range. But generally you would want to let the compiler catch the problem rather than having to deal with it at runtime.
Problem
Suppose I have a method that takes one `int` as a argument, suppose the method expects only the values 0, 1, 2 and not other int. Is there a way to "force" the method to accept only 0, 1, 2?