2016-04-20 3 views
1

Недавно я наткнулся на нечетную деталь в Java JodaTime Library.Почему у объекта должен быть метод, возвращающий «это»?

Существует класс Instant, который имеет метод под названием toInstant(). Метод просто возвращает this.

/** 
* Get this object as an Instant by returning <code>this</code>. 
* 
* @return <code>this</code> 
*/ 
public Instant toInstant() { 
    return this; 
} 

У меня нет абсолютно никакой идеи, как это должно быть полезно. Если вы хотите вызвать этот метод, вам уже понадобится объект, который вы надеетесь получить от него. Или это просто для удовлетворения интерфейса?

+1

Да, 'toInstant()' должен быть реализован, потому что он определен в интерфейсе 'ReadableInstant'. – Tunaki

ответ

3

Instant расширяет AbstractInstant, который реализует ReadableInstant.

DateTime и другие объекты времени также являются ReadableInstant, так что да, это удовлетворяет интерфейсу; и часть, которую вы смотрите, может не иметь такого смысла в этом контексте. Рассматривая другие реализации ReadableInstant, это имеет смысл.

Например

MutableDateTime dateTime = new MutableDateTime(); 
// Available because MutableDateTime is a ReadableInstant 
Instant instant = dateTime.toInstant(); 
1

Представьте, что различные методы делают вещи и возвращают это. Вы могли бы:

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

, если у меня есть MyInstant extends Instant тогда я мог бы вернуть его в качестве суперкласса

Смежные вопросы