我试图弄清楚是否可能,我失败了,但也许有可能(我认为应该有可能)。
假设我们有一些类似于 Swing 层次结构的 UI 组件 + 我们将使用流畅的接口Fluent Interfaces:
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();
}
是否有可能使用泛型来编写类似的东西?
new TitledPanel().setName("panel").setTitle("Title);
setName 应该返回 TitledPanel 而不是 Component 以便能够链接这些调用。
这只是一个简单的例子,但想法是一旦我有一个类型为 T 的对象,任何对超类的任何流利方法的调用都返回类型 T。
编辑1:我忘了排除覆盖方法并返回协变类型的部分:)如果确实可能的话,我只想要普通的泛型。