Java 为什么一个对象应该有一个返回“this”的方法?

Java 为什么一个对象应该有一个返回“this”的方法?,java,oop,jodatime,Java,Oop,Jodatime,我最近在Java JodaTime库中偶然发现了一个奇怪的细节 有一个类Instant,它有一个名为toInstant的方法。该方法只返回这个值 我完全不知道这会有什么帮助。如果你想调用这个方法,你已经需要你希望从中得到的对象了。或者这仅仅是为了满足一个接口吗?想象一下不同的方法做事情并返回它。你可以: x.doStuff().andStuff().andStuff(2).otherStuff().OtherStuffToo(); 想象一下,用不同的方法做事情并返回这个。你可以: x.doSt

我最近在Java JodaTime库中偶然发现了一个奇怪的细节

有一个类Instant,它有一个名为toInstant的方法。该方法只返回这个值


我完全不知道这会有什么帮助。如果你想调用这个方法,你已经需要你希望从中得到的对象了。或者这仅仅是为了满足一个接口吗?

想象一下不同的方法做事情并返回它。你可以:

x.doStuff().andStuff().andStuff(2).otherStuff().OtherStuffToo();

想象一下,用不同的方法做事情并返回这个。你可以:

x.doStuff().andStuff().andStuff(2).otherStuff().OtherStuffToo();
Instant扩展了AbstractInstant,后者实现了ReadableInstant

DateTime和其他时间对象也是ReadableInstant,所以是的,这是一个令人满意的接口;而且,在这种情况下,你所看到的部分可能没有那么有意义。看看ReadableInstant的其他实现,它更有意义

比如说

MutableDateTime dateTime = new MutableDateTime();
// Available because MutableDateTime is a ReadableInstant
Instant instant = dateTime.toInstant();
Instant扩展了AbstractInstant,后者实现了ReadableInstant

DateTime和其他时间对象也是ReadableInstant,所以是的,这是一个令人满意的接口;而且,在这种情况下,你所看到的部分可能没有那么有意义。看看ReadableInstant的其他实现,它更有意义

比如说

MutableDateTime dateTime = new MutableDateTime();
// Available because MutableDateTime is a ReadableInstant
Instant instant = dateTime.toInstant();
如果我有MyInstant extends Instant,那么我可以将其返回为超类

如果我有MyInstant extends Instant,那么我可以将其返回为超类

返回这允许使用我的martin fowler所描述的方法

返回此项允许使用我的martin fowler

是的,应该实现toInstant,因为它是在接口ReadableInstant中定义的。是的,应该实现toInstant,因为它是在接口ReadableInstant中定义的。