6

我想知道如果我使用以下布尔值,为什么 Eclipse 会产生以下 getter 和 setter:

boolean isLifeTimeMember

图片

getter 应该是 isIsLifeTimeMember() 而不是 isLifeTimeMember()

我认为它影响了在 JSP 中调用变量 isLifeTimeMember。因为它将查看 JSP 并将其映射到 isIsLifeTimeMember() getter 方法。

错误是因为没有 isIsLifeTimeMember() 方法但是eclipse生成的getter是isLifeTimeMember()

谢谢你。

4

2 回答 2

17

Eclipse 名称生成规则是布尔 getter 应该以is. 如果变量名已经以 开头is,那么它认为不需要额外的前缀。

Eclipse 有一个设置来控制is生成的布尔 getter 的使用。打开首选项并导航到Java > Code Style。在那里,您可以取消选中“对返回布尔值的 getter 使用 'is' 前缀”选项。然后,Eclipse 生成的布尔 getter 将以“get”开头,就像所有其他的一样。

顺便说一句,Java 在具有同名的字段和方法方面没有问题。

但是,属性名称以“is”开头可能会导致 jsp 出现问题。如该线程中所述,最好避免使用类似问题的属性名称 (isLifeTimeMember),而只使用属性本身作为属性名称 (lifeTimeMember)。

代码示例:

boolean lifeTimeMember;

public boolean isLifeTimeMember() {
   return lifeTimeMember;
}

public void setLifeTimeMember(boolean lifeTimeMember) {
   this.lifeTimeMember = lifeTimeMember;
}

而在 JSP 中,如果您需要使用此变量,只需使用变量名“lifeTimeMember”。

于 2012-11-27T05:12:01.593 回答
2

在布尔变量的情况下,eclipseis会在变量名称前添加以形成 getter 名称。即,如果变量是boolean present;,则生成的 getter 将被命名isPresent();

不建议is在变量名中有一个。

如果变量名称是ispresent,在 jsp 上,您将通过变量名称查找,ispresent该变量名称又查找它的 getter,它是一个布尔值,因此它假定 getter 将isispresemt();是不存在的,因为 eclipse 中的 getter setter 生成器不添加一个is以防万一变量名中已经存在。

因此 could not find the field ispresent预计会抛出异常

有一个isin 字段名称,可能会导致问题,避免使用它们

于 2012-11-27T05:27:45.547 回答