我想知道为什么eclipse会产生以下getter和setter,如果我使用以下布尔值:
boolean isLifeTimeMember
getter应该是isIsLifeTimeMember()而不是isLifeTimeMember()
我认为它影响了在JSP中调用变量isLifeTimeMember。因为它会查看JSP并将其映射到isIsLifeTimeMember()getter方法。
因为没有isIsLifeTimeMember()方法会导致错误,但是eclipse生成的getter是isLifeTimeMember()
谢谢。
答案 0 :(得分:15)
Eclipse名称生成规则是布尔getter应该以{{1}}开头。如果变量名称已经以is
开头,那么它认为不需要额外的前缀。
Eclipse有一个设置可以控制is
对生成的布尔getter的使用。打开首选项并导航到is
。在那里你可以取消选中“使用'是'前缀用于返回布尔值的getter”。 Eclipse生成的布尔getter将以“get”开头,就像所有其他的一样。
顺便说一下,Java在使用具有相同名称的字段和方法时没有问题。
但是,使用以“is”开头的属性名称可能会导致jsp出现问题。如this thread中所述,最好避免使用类似问题的属性名称(isLifeTimeMember),而只是将属性本身用作属性名称(lifeTimeMember)。
代码示例:
Java > Code Style
在JSP中,如果需要使用此变量,只需使用变量名“lifeTimeMember”。
答案 1 :(得分:2)
在布尔变量的情况下,eclipse将is
添加到变量名称前以形成getter名称。即如果变量为boolean present;
,那么已对齐的getter将命名为isPresent();
不建议在变量名中加is
。
如果变量名称为ispresent
,则在jsp上,您将按变量名ispresent
进行查找,而变量名isispresemt();
依次查找其getter,它是一个布尔值,因此它假定getter为is
由于eclipse中的getter setter生成器在变量名中已经存在的情况下不会添加could not find the field ispresent
,因此不存在。
因此预计会抛出异常is
在字段名称中包含{{1}},可能会导致问题,避免使用它们