如何在此接口中重写此方法(请参阅代码)?

我有一个名为A的接口:


public interface A { 

    void X(T t);

}

然后我有两个子类(B和C)来实现这个接口,但是它们中的每一个都向X传递不同的类型,假设B传递类型foo,C传递类型栏:


public class B implements A {

    @Override

    public <T extends foo> void X(T type1)

}


public class C implements A {

    @Override

    public <T extends bar> void X(T type2)

}

我做错了什么,为什么这不起作用?编译器一直告诉我“方法不会从其超类中重写方法”。


提前致谢!


GCT1015
浏览 100回答 1
1回答

临摹微笑

即使使用泛型方法,当它们被重写时,泛型也必须完全匹配。可能不符合要求的一种方法是删除实现类的上限,例如class B implements A {&nbsp; &nbsp; @Override&nbsp; &nbsp; <T> void X(T type1) { /* impl */ }}但是,如果需要上限,则在接口上使用类型参数表示上限。interface A<U> {&nbsp;&nbsp; &nbsp; <T extends U> void X(T t);}然后,可以在实现类中提供上限的类型参数。class B implements A<Foo> {&nbsp; &nbsp; @Override&nbsp; &nbsp; public <T extends Foo> void X(T type1) { /* impl */ }}class C implements A<Bar> {&nbsp; &nbsp; @Override&nbsp; &nbsp; public <T extends Bar> void X(T type2) { /* impl */ }}但是,因为您可以调用的任何内容都可以调用 or ,也许这些方法不需要是泛型的。TFooBarinterface A<T> {&nbsp;&nbsp; &nbsp; void X(T t);}class B implements A<Foo> {&nbsp; &nbsp; @Override&nbsp; &nbsp; public void X(Foo type1) { /* impl */ }}class C implements A<Bar> {&nbsp; &nbsp; @Override&nbsp; &nbsp; public void X(Bar type2) { /* impl */ }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java