new*_*der 4 java oop methods contracts
我是编程新手,正在学习 Java 作为我的第一门 oo 语言,通过阅读 David J. Eck 的 Java 编程简介并在遇到问题时阅读论坛帖子。
我的问题可以被认为是Java 类构造函数参数的后续,其范围限制处理将 Hour 类的构造函数的 int 参数限制为 0 到 23。
上述问题的答案提到抛出 Instantiation Exception 或 IllegalArgumentException,但不清楚哪种风格更好。
此外,何时(如果有的话)与验证代码相关的开销是否合理?
只有抛出一个IllegalArgumentException.
抛出以指示方法已传递非法或不适当的参数。
AnInstantiationException用于不同的目的。
当应用程序尝试使用 class 中的 newInstance 方法创建类的实例
Class,但无法实例化指定的类对象时抛出。实例化失败的原因有很多,包括但不限于:
类对象表示抽象类、接口、数组类、原始类型或
void该类没有空构造函数
AnInstantiationException与未能调用构造函数的反射调用有关,但 anIllegalArgumentException意味着构造函数(或方法)被成功调用,但代码块确定参数不合适。
最好有一点开销来验证传入构造函数(和方法)的参数。一个不能正常工作的程序或类比一个正常工作的程序更糟糕,而且可能慢得可以忽略不计。
| 归档时间: |
|
| 查看次数: |
305 次 |
| 最近记录: |