gpt4 book ai didi

java - 构造函数应该何时以及如何对实例变量施加限制?

转载 作者:搜寻专家 更新时间:2023-11-01 02:44:47 27 4
gpt4 key购买 nike

我是编程新手,正在学习 Java 作为我的第一门 oo 语言,方法是阅读 David J. Eck 的 Introduction to Programming Using Java 并在遇到困难时阅读论坛帖子。

我的问题可以被视为 Java Class Constructor Parameters with range limits 的后续问题它处理将 Hour 类的构造函数的 int 参数限制为 0 到 23。

上述问题的答案提到抛出 Instantiation Exception 或 IllegalArgumentException,但不清楚哪种方式更好。

此外,与验证代码相关的开销何时(如果有的话)是否合理?

最佳答案

只有抛出 IllegalArgumentException 才是正确的.

Thrown to indicate that a method has been passed an illegal or inappropriate argument.

InstantiationException是为了不同的目的。

Thrown when an application tries to create an instance of a class using the newInstance method in class Class, but the specified class object cannot be instantiated. The instantiation can fail for a variety of reasons including but not limited to:

  • the class object represents an abstract class, an interface, an array class, a primitive type, or void

  • the class has no nullary constructor

InstantiationException 与未能调用构造函数的反射调用有关,但 IllegalArgumentException 表示成功调用了构造函数(或方法),但 block 代码确定参数不合适。

总是最好有一点开销来验证传入构造函数(和方法)的参数。一个不能正常工作的程序或类比一个正常工作的程序更糟糕,并且可能慢得可以忽略不计。

关于java - 构造函数应该何时以及如何对实例变量施加限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25194009/

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