Eclipse中有一个选项(Preferences -> Java->Code )
如果返回是布尔值,它允许getter的前缀是" is“。
我的问题是,如果返回是包装类(布尔),它为什么不做前缀呢?
发布于 2013-09-26 09:07:55
这仅仅是因为根据specification/convention/implementation是java前缀,它只适用于原始对象。
您可以查看PropertyDescriptor类源代码(getRealMethod):
if (readMethodName == null) {
Class type = getPropertyType0();
if (type == boolean.class || type == null) {
readMethodName = "is" + getBaseName();
} else {
readMethodName = "get" + getBaseName();
}
}所以月食只符合这一点。
编辑:现在,为什么以这种方式生成属性描述符是另一个问题,可能是Java人员认为空返回类型和" is“前缀的可能性可能会产生误导。
发布于 2013-09-26 08:53:21
布尔是原语类型,布尔是对象。除了为true或false外,对象还具有其他属性。所以也许这就是为什么他们只为原始类型设计它的原因。
如果有一个名为isActive的getter,您将希望它返回true或false,而不是空或其他任何内容。
发布于 2013-09-26 08:57:28
在原语类型boolean中,只有true和false是可能的。但是,如果使用对象类型Boolean,则null也会被接受。在这种情况下通常是不合适的。
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类型的原因。
https://stackoverflow.com/questions/19023548
复制相似问题