问题描述
我正在编写一个小功能接口和它包含的方法,将一个 int 作为参数。我想知道是否有任何方法可以检查何时调用此方法,传递给该方法的值不会超过某个值,如果超过,则抛出错误。是否有我可以添加的注释?
这就是我的界面
public interface DrawCardHandler{
void onDrawCard(int slot);
}
解决方法
定义一个类
与其传递一个简单的 int
原语,不如定义一个类来表示您的特定含义。
public final class Slot {
private int value;
public Slot(int value) { // Constructor.
if(/** your check goes here **/) {
throw new IllegalArgumentException("...");
}
this.value = value;
}
// getter etc. goes here.
}
在 Java 16 及更高版本中,使用 records 功能。记录是编写类的一种简短方式,其主要目的是透明和不可变地通信数据。编译器隐式创建构造函数、getter、equals
& hashCode
和 toString
。我们可以选择编写一个显式构造函数来验证输入。
public record Slot (int value) {
public Slot(int value) { // Constructor.
if(/** your check goes here **/) {
throw new IllegalArgumentException("...");
}
this.value = value;
}
// The getters,equals & hashCode,and toString are implicitly created by compiler.
}
那么您的界面可能如下所示:
public interface DrawCardHandler{
void onDrawCard(Slot slot);
}
定义一个枚举
一般来说,如果您事先知道所有可能的插槽,您可以为 Slot
创建一个枚举,而不是像我展示的那样创建一个类 - 它会更具表现力。