假设我有一个类型族,我在基本类型中定义了一组方法:
interface Foo<T> {
Foo<T> a();
Foo<T> b();
...
}
并Bar
延伸Foo
interface Bar<T> extends Foo<T> {
Bar<T> a();
Bar<T> b();
...
}
然后Zee
延伸Bar
interface Zee<T> extends Bar<T> {
Zee<T> a();
Zee<T> b();
...
}
当我用不同的装饰器实现这个类型系列时,我发现我经常写类似的东西
class XBar<T> extends XFoo<T> implements Bar<T> {
Bar<T> a() {
return (Bar<T>)super.a();
}
Bar<T> b() {
return (Bar<T>)super.b();
}
...
}
这真的很乏味。我想知道Java API设计中的这种正常情况还是我做错了什么,或者有一种聪明的方法可以用一行代码解决常量类型转换?
更新,回答您的评论和回复,是的,方法链是我想在这里实现的一件事。BTW 看起来BaseStream
Java8 中的类型声明是解决这个问题的一个很好的例子。我正在尝试使用这种方法。将在这里更新我的进度。
更新 2,当我有多个继承级别时,该BaseStream
方法不起作用。请参阅多级层次结构中的 Java 继承的 Fluent 方法返回类型