java - 什么是监护人代码?

标签 java definition

我的讲师开始在我们的阅读 Material 中提到一种称为监护人代码的东西。如果有帮助的话,这是一个 Java 初学者模块。以下是文中的一些引用资料。

Since there are no mutators and therefore no mutator guardian code the guardian code is forced into the constructor (as a call to the validateDate(…) private helper method). The constructor would usually call the mutators to check initial values received as constructor parameters were valid before assigning them their respective instance variables.

任何帮助将不胜感激

谢谢!!

最佳答案

文本指的是提供参数验证的代码,“保护”对象免于进入不良状态。

Fox 示例,如果您正在构建一个具有名为 serialNumberString 属性的类,该属性必须为七到九个字符长,则可以添加如下 setter:

void setSerialNumber(String sn) {
    if (sn == null || sn.length() < 7 || sn.length() > 9) {
        throw new IllegalArgumentException("sn");
    }
    serialNumber = sn;
}
上面代码片段中的

if 是“监护人代码”。教科书说,当类是可变的时,这个监护人代码就会进入 setter 。但是,当类不可变时,您可以将此代码移至构造函数中:

MyObject(String sn) {
    if (sn == null || sn.length() < 7 || sn.length() > 9) {
        throw new IllegalArgumentException("sn");
    }
    serialNumber = sn;
}

关于java - 什么是监护人代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43874078/

相关文章:

java - 小米设备允许应用程序在后台运行时弹出窗口

java - 为什么输入与 "-1"进行比较?

python - 在python中分离复数的实部和虚部

html - 替换 DOA <di> 标签

javascript - 如何定义一个构造函数来生成具有 getter 和 setter 的对象?

java - 从 Firestore 数据库检索 GeoPoint 数组添加 map 多边形

Java MongoDB : updating one item within an object array

c# - GAE 上的 RoR?

haskell - .. 在哪里定义?

c++ - C++ 编程语言,定义与声明练习(简单,如果需要 XD 的帮助很乏味)