无论如何在使用模板时重写方法?

时间:2014-06-04 10:46:35

标签: java templates

我需要使用相同的方法,但具有不同的参数类型:

public interface IKid<T,D,S> {

    public T findCookie(D id);

    public T findCookie(S id);  

}

这样我可以在实现此接口时执行此操作:

public class NaughtyKid implements IKid<Foo, Loo, Moo> {
    public Foo findCookie(Loo id);

    public Foo findCookie(Moo id);      
}

但是,我在界面中收到此错误:

Method findCookie(D) has the same erasure findCookie(Object) as another method in type IKid<T,D,S>.

有没有办法避免这个问题?

谢谢!

1 个答案:

答案 0 :(得分:3)

  

有没有办法避免这个问题?

您只需要为方法提供不同的名称 - 它就像那样简单。

除了其他任何内容之外,如果您实现IKid<Object, String, String>并希望为两个不同的接口方法提供两种不同的实现,那么这将消除明显的问题,这些方法在类型替换后具有相同的签名

它还使得使用界面理解任何代码变得更加容易,因为您可以在不查找类型参数的情况下一眼就能看出正在调用的方法。