【发布时间】:2011-01-12 22:38:48
【问题描述】:
我尝试了几天来确定是否可能,我失败了,但也许这是可能的(我认为应该是可能的)。
假设我们有一些类似于 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:我忘了排除重写方法并返回协变类型的部分 :) 如果确实可能的话,我只想要普通的泛型。
【问题讨论】:
标签: java generics user-interface components fluent-interface