gpt4 book ai didi

java - 如何只允许某些 int 值作为 Java 中方法的参数?

转载 作者:行者123 更新时间:2023-11-29 07:25:42 25 4
gpt4 key购买 nike

正在为带有两个 int parameters (min,max) 的库创建方法,如果最大值大于最小值,则方法只能接受参数在运行时,这意味着在编写代码时如果参数无效,它会在运行代码之前显示警告,因为我需要在两个值之间获取 Random 数字。

我从搜索中找到的是这个答案 How to only allow certain values as parameter for a method in Java?

然而,我似乎无法让它与 int 值一起工作。

这是我的代码:

 public void call(int min, int max) throws InvalidParameterException {
if (min == (int) min) {
if (max == (int) max) {
if (max <= min) {
throw new InvalidParameterException();
} else {
Random rand = new Random();
// nextInt is normally exclusive of the top value,
// so add 1 to make it inclusive
int randomNum = rand.nextInt((max - min) + 1) + min;

}

} else {
throw new InvalidParameterException();
}
} else {
throw new InvalidParameterException();
}
}

最佳答案

其他答案提到了在运行时(方面也是)方法参数的正常验证,这没什么特别的。唯一要补充的是你正在做一个技巧,当你有一个浮点类型并且你想检查它是否等于整数类型时使用,例如 double == int。通常它总是会返回 false,这就是为什么将 double 转换为 int 以执行实际检查的原因。在您的代码中不需要这样做,因为您只有整数,int == (int) int 根本没有必要。

你链接的答案,它提到了在编译时使用枚举进行验证——这里不可能,你可以创建一个包含很多整数值的枚举,但请不要这样做,除非你的值范围确实是有限。

想到的其他选项(因为它通常用于在您的代码以外的其他地方执行“魔术”)是注释处理,但我认为这个用例实际上不可能,绝对不是标准方式.

您需要的是某种源代码分析器。类似 Intellij/Eclipse 插件的东西,PMD , Checker ,或其他类似的工具。它会分析你的方法调用的每一次出现,并检查第一个参数是否小于第二个参数,如果不是那么它就不会编译,你甚至不会达到运行时的程度。在这种情况下绝对不值得付出努力,但如果您想大规模处理此问题(例如 Java 空值),这可能是一件好事。

关于java - 如何只允许某些 int 值作为 Java 中方法的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53481491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com