【发布时间】:2018-06-28 06:25:19
【问题描述】:
public interface A {
public void setStar(Star star)
}
public class A-Class implements A {
public void setStar(StarImpl star)
}
public interface Star {
}
public class StarImpl implements Star {
}
所以基本上,我想将接口 A 应用于 A-Class。但它给了我错误:A-Class is not abstract and does not override abstract method setStar(Star)。
我知道原因是A类中的setStar()与接口A中的不完全相同。但是我不知道如何使用泛型来修复它?有任何想法吗?非常感谢!
我尝试了什么:
public class A-Class implements A {
public void setStar(<? extends Star> star)
}
public class A-Class implements A {
public <T extends Star> void setStar(T star)
}
它们都不起作用。再次,提前感谢!
【问题讨论】:
-
更改 A 级名称。您的详细信息有问题。错误应该是
A-Class is not abstract and does .. -
@Ravi 感谢您的更正。
-
@ElliottFrisch 这是否意味着我需要将接口更改为超类?
-
取决于你想要做什么;再次阅读该链接。它会告诉您何时需要
extends、super或两者都不需要。你告诉我们它不起作用,而不是你想要它做的......
标签: java generics inheritance interface overriding