【问题标题】:How to implement interface method with generic如何用泛型实现接口方法
【发布时间】: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 这是否意味着我需要将接口更改为超类?
  • 取决于你想要做什么;再次阅读该链接。它会告诉您何时需要 extendssuper 或两者都不需要。你告诉我们它不起作用,而不是你想要它做的......

标签: java generics inheritance interface overriding


【解决方案1】:
public interface A<T extends Star> {
  public void setStar(T star)
}

经过一番尝试,我自己解决了这个问题。基本上,它是为接口 A 添加泛型。谢谢,伙计们!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    相关资源
    最近更新 更多