public interface Factory<T>
{
T create();
}
public interface Factory<T,P>
{
T create(P... data);
}
有没有办法定义这些界面,所以我可以为这两种类型使用名称Factory
,还是必须使用FactoryWithParam
?
答案 0 :(得分:4)
你有什么理由不能将这两个接口加入一个接口吗?
public interface Factory<T,P>
{
T create();
T create(P... data);
}
但是如果你不能,那么你就无法在同一个包中拥有两个不同的同名接口。你可以将它们放在不同的软件包中,但我强烈反对它,它会让任何维护代码的人感到困惑。
答案 1 :(得分:1)
不,因为泛型如何运作。为了保持向后兼容性,通用类的编译字节码没有区别 - 它们仅强制执行编译时检查!这意味着您将拥有两个具有相同名称的类,这是不允许的(在同一个包中)。
答案 2 :(得分:0)
您可以,但前提是您将这两个接口放在两个不同的包中。