Java中的不变参数

时间:2015-06-21 13:16:51

标签: java

我正在阅读Bloch的Effective Java,现在我正处于第二项(Builder模式)。以下是他所说的:

  

与构造函数一样,构建器可以对其参数强加不变量。   构建方法可以检查这些不变量。

不变量是什么意思?你不能解释一下吗?

2 个答案:

答案 0 :(得分:2)

据我所知,不变量只是参数的属性,它们总是正确的。例如,有人可能会说卡路里必须总是大于0.所以我相信这本书只是说构建方法可以检查它并在违反时抛出异常。

答案 1 :(得分:2)

不变量是简单的约束,不应该违反对象处于安全状态。

不变量可以像

一样简单
:

它可以是复数/组合不变量,这意味着两个参数组合成一个有效的组合。例如。 -

simple regex check on some string property of a class. 

对于简单的情况,构建器可以在构建器中的相应属性方法中检查不变量本身,如果它接受任何具有不变量的参数,则甚至可以检查构建器的构造函数。

对于组合不变量,可以在类中包含构建器的构造函数中完成检查。或者,构建器的构建方法也可以执行所有这样的组合不变验证。

我希望这可以为这个概念提供一些帮助。