Java - 使用泛型的多重签名?

时间:2011-01-25 11:13:29

标签: java generics

public interface Factory<T>
{
    T create();
}

public interface Factory<T,P>
{
    T create(P... data);
}

有没有办法定义这些界面,所以我可以为这两种类型使用名称Factory,还是必须使用FactoryWithParam

3 个答案:

答案 0 :(得分:4)

你有什么理由不能将这两个接口加入一个接口吗?

public interface Factory<T,P>
{
    T create();
    T create(P... data);
}

但是如果你不能,那么你就无法在同一个包中拥有两个不同的同名接口。你可以将它们放在不同的软件包中,但我强烈反对它,它会让任何维护代码的人感到困惑。

答案 1 :(得分:1)

不,因为泛型如何运作。为了保持向后兼容性,通用类的编译字节码没有区别 - 它们仅强制执行编译时检查!这意味着您将拥有两个具有相同名称的类,这是不允许的(在同一个包中)。

答案 2 :(得分:0)

您可以,但前提是您将这两个接口放在两个不同的包中。