Есть ли способ сказать «метод возвращает это» в Java?
=====================================================

 Есть ли способ сказать "этот метод возвращает`this` "используя Дженерикс?

 Конечно, я хочу переопределить этот метод в подклассах, поэтому объявление должно хорошо работать с`@Override`.

 Вот пример:

`public <T extends Base> T copyTo (Base dest)` не работает вообще: я получаю "Несоответствие типов: не могу конвертировать из базы в T". Если я приведу его к исполнению, переопределение завершится неудачей.

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

 Если вы хотите иметь какой-то маркер для этого, вы всегда можете ввести свою собственную аннотацию - но не ожидайте, что другие инструменты заметят это.

EDIT: ответ от oxbow\_lakes действительно дает что-то, что будет работать в большинстве случаев, но я считаю, что есть способы обмануть его так, что вы на самом деле имеете дело с другим типом. (Во всяком случае, из воспоминаний об экспериментах.) Обратите внимание, что это похоже на работу перечислений Java.



 что они сделали в Scala с [2.8 рамки коллекции](http://scaladocs.jcraft.com/2.8.0/)). Объявите некоторый метод интерфейса, который должен возвращать «себя» **Заметка** `This` - это параметр типа, а не ключевое слово!)

 Теперь объявите уровень косвенности - класс "шаблон"

 Затем реализация`List` должен вернуть`List` от`add` метод (я позволю вам заполнить детал

 Точно так же вы могли бы объявить`SetTemplate` и`Set` чтобы продлить`Addable` интерфейс -`add` метод которого вернул бы`Set`. Круто, да