微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有办法要求特定值作为 Java 抽象接口方法中的参数?

如何解决有没有办法要求特定值作为 Java 抽象接口方法中的参数?

我正在编写一个小功能接口和它包含的方法,将一个 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 & hashCodetoString。我们可以选择编写一个显式构造函数来验证输入。

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 创建一个枚举,而不是像我展示的那样创建一个类 - 它会更具表现力。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。