让我说有一个类似于
的抽象类abstract class Parent<V> {
protected static <T extends Parent<V>, V> T newInstance(
final Class<T> type, final V value) {
// ...
}
}
在以下Child类
中class Child extends Parent<XXX> {
public static Child newInstance1(final XXX value) {
// ...
}
public static Parent<XXX> newInstance2(final XXX value) {
// ...
}
}
哪一个更好? newInstance1
或newInstancw2
?
答案 0 :(得分:4)
这实际上取决于您使用newInstance()
的情况。在大多数情况下:
由于Child
正在实施newInstance()
,据我说
protected static Child newInstance()
{
// ...
}
会更合适。
答案 1 :(得分:1)
通常,在某个类中定义的工厂方法会返回此特定类的实例,因此它应该是:
public class Foo ...
{
public static Foo newInstance ()
{
...
}
}
无论此类扩展了什么类以及它实现了什么接口。