因此,我的编程教授希望我编写一个 Kingdom 类,其变量名至少有 12 个字符长。
通常情况下,如果最小 12 个字符的不变量被破坏,人们只需使用 String 名称变量和错误消息来实现此类,就像 Java 中的这样:
import java.lang.annotation.AnnotationTypeMismatchException;
public class Kingdom {
private String name;
public String getName(){return name;}
public Kingdom(String name) {
if (name.length() < 12){
throw new IllegalArgumentException("name must have at least 12 characters");
}
this.name = name;
}
}
或者 Kotlin 中的:
import java.lang.IllegalArgumentException
class KingdomName (name: String) {
public val name: String = if (name.length >= 12) name else throw IllegalArgumentException("name must have at least 12 characters")
}
但我想知道是否有一个更优雅的路径,可以在变量名称本身中定义“必须至少有 12 个字符”不变量,迫使我的教授输入至少 12 个字符作为名称,就像我们都被迫一样将 -2,147,483,648 到 2,147,483,647 之间的整数分配给 int/Int 类型的变量。
现在我考虑将我的名字设为 char[] 数组,并在构造函数中只允许长度大于或等于 12 的 char 数组,在 fake-Java 中类似这样:
public class Kingdom {
private char[] name;
public Kingdom(char[<=12] name) { //this line cannot exist in real Java
this.name = name;
}
}
但有办法吗?
我还考虑发明一种名为 KingdomName 的新类型,它与 char[] 数组相同,但必须始终具有至少 12 个元素,但同样,我该如何做到这一点?