【发布时间】:2014-04-23 21:24:17
【问题描述】:
interface Base<T extends Base> {
T method();
}
反对这种模式设计
interface Base {
Base method();
}
我猜,只有method() in Base 我可以得到特定的类型。
还有更多好处吗?
【问题讨论】:
标签: java oop design-patterns
interface Base<T extends Base> {
T method();
}
反对这种模式设计
interface Base {
Base method();
}
我猜,只有method() in Base 我可以得到特定的类型。
还有更多好处吗?
【问题讨论】:
标签: java oop design-patterns
你只需保存一个演员表。这是一个例子:
class A implements Base<A> {
...
}
A a = ...;
A b = a.method();
对
class A implements Base {
...
}
A a = ...;
A b = (A)a.method();
您也可以在整个地方使用 T 参数来构建它。例如,考虑接受 T 作为参数或定义 T 类型的局部变量。
【讨论】:
我能注意到的唯一区别是方法可以是 T 类或任何继承的类。
【讨论】:
其实很清楚。在第二种情况下,可以返回Base2 中的任何subclass。在第一种情况下,没有这种歧义。
【讨论】: