首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Eclipse -生成Getters/Setters

Eclipse -生成Getters/Setters
EN

Stack Overflow用户
提问于 2013-09-26 08:51:05
回答 4查看 1.3K关注 0票数 5

Eclipse中有一个选项(Preferences -> Java->Code )

如果返回是布尔值,它允许getter的前缀是" is“。

我的问题是,如果返回是包装类(布尔),它为什么不做前缀呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-09-26 09:07:55

这仅仅是因为根据specification/convention/implementation是java前缀,它只适用于原始对象。

您可以查看PropertyDescriptor类源代码(getRealMethod):

代码语言:javascript
复制
 if (readMethodName == null) {
    Class type = getPropertyType0();
    if (type == boolean.class || type == null) {
        readMethodName = "is" + getBaseName();
    } else {
        readMethodName = "get" + getBaseName();
    }
    }

所以月食只符合这一点。

编辑:现在,为什么以这种方式生成属性描述符是另一个问题,可能是Java人员认为空返回类型和" is“前缀的可能性可能会产生误导。

票数 9
EN

Stack Overflow用户

发布于 2013-09-26 08:53:21

布尔是原语类型,布尔是对象。除了为true或false外,对象还具有其他属性。所以也许这就是为什么他们只为原始类型设计它的原因。

如果有一个名为isActive的getter,您将希望它返回true或false,而不是或其他任何内容。

票数 2
EN

Stack Overflow用户

发布于 2013-09-26 08:57:28

在原语类型boolean中,只有truefalse是可能的。但是,如果使用对象类型Boolean,则null也会被接受。在这种情况下通常是不合适的。

代码语言:javascript
复制
  public class MyClass{
   private boolean status;
   private Boolean sts;

   public boolean isStatus(){
      return status;
   }

   public Boolean getSts(){
      return sts;        
   }

   // setters
  }

当我们调用isStatus结果时,肯定是正确的还是错误的。这很有道理。但是isSts可以返回null。这是一些不合逻辑的东西。这可能是将get用于Object类型的原因。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19023548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档