此方法签名是否有效?
public Boolean isBikeTyreFlat(){}
Run Code Online (Sandbox Code Playgroud)
请注意,我试图在这里返回一个Object而不是一个原语.
谢谢 :)
我正在用Java编写一些不可变类型,并想知道如何命名访问器方法.Java Bean规范说访问者的名称应该是getX或isX,但由于字段是final,因此没有setter,字段更像属性而不是属性.
因为我更喜欢命名getter方法,如:
public T x()
Run Code Online (Sandbox Code Playgroud)
而不是
public T getX()
Run Code Online (Sandbox Code Playgroud)
请注意作为一个例子:
public int java.lang.String#length()
Run Code Online (Sandbox Code Playgroud)
(这可能是在Java历史的早期指定的,所以那些惯例还没有.)
不可变对象暴露意味着通过我试图命名为动词的方法创建自己的修改版本而不是MyObject MyObject#setX(),这应该限制用户调用setX()并认为对象已更改的风险.所以:MyObject MyObject#shine(newShineLevel).
但这并不总是那么容易.你如何命名一个方法来调整一个矩形以外的矩形Rectangle.setUpperLeft()?Rectangle.adjustUpperLeft也许,但现在我们正在摆脱惯例.
我想这个问题与所有语言都有关系,但这个问题尤其涉及Java.