2012-11-27 35 views
5

我很奇怪,为什么日食产生以下getter和setter如果我用下面的布尔:布尔getter和setter使用eclipse

boolean isLifeTimeMember 

Image

吸气应该isIsLifeTimeMember(),而不是isLifeTimeMember( )

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

错误,因为没有isIsLifeTimeMember()方法,但通过月食产生的吸气剂isLifeTimeMember()

谢谢。

+0

如果你从一个JSP调用它,吸气剂应该是'getIsLifeTimeMember ()'。 Get是在JSP中假定的。 – Makoto

+0

请勿上传图片。只需粘贴代码即可。 –

+0

我假设你的意思是代码是'boolean isLifeTimeMember;'而不是'boolean isLifeTimeMember()'。 Eclipse不会为方法生成getter和setter! –

回答

14

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

Eclipse有一个设置,用于控制对生成的布尔型获取器使用is。打开首选项并导航到Java > Code Style。在那里你可以取消选择“使用”是'getters返回布尔值的前缀'。 Eclipse生成的布尔getter将以“get”开始,就像所有其他的一样。

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

但是,具有以“is”开头的属性名称可能会导致jsp出现问题。如this thread中所述,最好避免像问题(isLifeTimeMember)一样阅读的属性名称,而只是将属性本身用作属性名称(lifeTimeMember)。

+0

当我调用 newbie

+0

>时,会不会影响我的jsp,因为我认为它会查看isIsLifeTimeMember getter方法? – newbie

+0

@newbie - 这可能会导致问题。正如[本主题](http://stackoverflow.com/questions/2945061/java-how-to-name-boolean-properties)中所述,最好避免像问题('isLifeTimeMember')一样阅读的jsp属性名称和而只需使用属性本身作为属性名称('lifeTimeMember')。 –

2

在布尔型变量的情况下,eclipse将变量名前缀is以形成getter名称。即如果变量是boolean present;,那么该被剔除的吸气剂将被命名为isPresent();

在变量名中不建议使用is

如果变量名是ispresent,JSP的你会被变量名ispresent这反过来查找其吸气查找,它的布尔则认为吸气将isispresemt();这是不存在如在Eclipse中的getter setter方法生成如果已经存在变量名称,则不会添加is

这样一个异常could not find the field ispresent有望被抛出

具有字段名的is,可能会造成问题,避免使用它们