Я несколько дней пытался выяснить, возможно ли это, я потерпел неудачу, но, возможно, это возможно (я думаю, что это возможно).
Допустим, у нас есть несколько компонентов пользовательского интерфейса, похожих на иерархии Swing + мы будем использовать плавные интерфейсы Свободные интерфейсы :
public abstract class Component {
...
public abstract Component setName(String name);
public abstract String getName();
...
}
public abstract class Panel extends Component {
....
}
public abstract class TitledPanel extends Panel {
....
public abstract TitledPanel setTitle(String title);
public abstract String getTitle();
}
Возможно ли использование generic, чтобы написать что-то подобное?
new TitledPanel().setName("panel").setTitle("Title);
setName должен возвращать TitledPanel вместо Component, чтобы иметь возможность связывать эти вызовы.
Это простой пример, но идея состоит в том, что когда у меня есть объект типа T, любой вызов любого свободного метода суперкласса для возврата типа T.
Редактировать 1: Я забыл исключить часть с переопределением методов и возвращением ковариантных типов :) Я хочу просто простые дженерики, если это действительно возможно.