Java 通用工厂方法惯例

Java 通用工厂方法惯例,java,generics,Java,Generics,让我说有一个抽象类 抽象类父类{ 受保护的静态newt实例( 最终类别类型、最终V值){ // ... } } 在下面的子类中 类子级扩展父级{ 公共静态子newInstance1(最终XXX值){ // ... } 公共静态父级newInstance2(最终XXX值){ // ... } } 哪一个更好newInstance1或newinstancecw2?这实际上取决于使用newInstance()的场景。在大多数情况下: 根据我的说法,因为Child正在实现newInstance()

让我说有一个抽象类

抽象类父类{
受保护的静态newt实例(
最终类别类型、最终V值){
// ...
}
}
在下面的子类中

类子级扩展父级{
公共静态子newInstance1(最终XXX值){
// ...
}
公共静态父级newInstance2(最终XXX值){
// ...
}
}

哪一个更好
newInstance1
newinstancecw2

这实际上取决于使用
newInstance()的场景。在大多数情况下:

根据我的说法,因为
Child
正在实现
newInstance()

protected static Child newInstance() 
{
    // ...
}

更合适。

通常,在某些类中定义的factory方法会返回此特定类的实例,因此它应该是:

public class Foo ...
{
    public static Foo newInstance ()
    {
        ...
    }
}

不管这个类扩展了什么类,实现了什么接口。

E指的是什么?是某个具体的现有类还是泛型类型变量?亲爱的@EyalSchneider我更新了源代码。很抱歉