为什么我的 getter 和 setter 与常量不起作用 string.length()?



有人能够解释为什么当我在 String.length(( 的 if 语句中使用常量时,它不会通过有效的测试,但如果我对 if 语句中的值进行硬编码,它会通过?

public void setName(String name) {
if (name.length() >= 1 && name.length() <= 20) {
this.name = name;
} else {
throw new IllegalArgumentException();
}
}

所以上面的方法会起作用,但我认为创建两个常量UPPER_NAME_LIMIT和LOWER_NAME_LIMIT具有相同值 1 和 20 的常量会是一个更好的主意。

* @param name the name to set
*/
public void setName(String name) {
if (name.length() >= LOWER_NAME_LIMIT && name.length() <= UPPER_NAME_LIMIT) {
this.name = name;
} else {
throw new IllegalArgumentException();
}
}

常量编码如下

public static final int UPPER_NAME_LIMIT = 1;
public static final int LOWER_NAME_LIMIT = 20;
public static final int UPPER_NAME_LIMIT = 1;
public static final int LOWER_NAME_LIMIT = 20;

将其更改为

public static final int UPPER_NAME_LIMIT = 20;
public static final int LOWER_NAME_LIMIT = 1;

最新更新