interface Base<T extends Base> {
T method();
}
反对这种模式设计
interface Base {
Base method();
}
唯一的,我想,method()
Base
我可以获得特定的类型。
还有更多好处吗?
答案 0 :(得分:9)
你只需保存一个演员。这是一个例子:
class A implements Base<A> {
...
}
A a = ...;
A b = a.method();
VS
class A implements Base {
...
}
A a = ...;
A b = (A)a.method();
你也可以在整个地方使用T参数进行构建。例如,考虑接受T作为参数或定义类型T的局部变量。
答案 1 :(得分:0)
我能注意到的唯一区别是方法可以是T类或任何继承的类。
答案 2 :(得分:0)
实际上很清楚。在第二种情况下,可以返回任何subclass
Base2
。在第一种情况下,没有这种模糊性。