您如何使用扩展 <java> 实现推理

How do you implement inference with extensions <java>

我试图弄清楚如何进行简单的实现,我想,如果接口扩展到另一个接口怎么办? 例如,

public interface A{
    public void a();
}

public interface B{
    public void b();
}

public interface C extends B, A {
    public void c();
}

如果我要在另一个 class 上实现接口 C,我必须做什么? 我通过阅读其他线程尝试了这个:

public class Example<E extends B&A> implements C{
    public void c(){
    }
}

好像不对。

有什么问题...只是实现所有接口?

public class Example implements C {
  @Override 
  public void a(){ }
  @Override 
  public void b(){ }
  @Override 
  public void c(){ }
}

换句话说:您认为首先将 Example 设为泛型类型有什么好处?!

意思是:如果我没有看到更深层次的问题 - 你应该考虑更新你的问题并解释你打算做什么(以避免在这里解决 xy problem)。如果没有更深层次的问题,请使用最简单的解决方案(如上所示)。

如果你想让你的 Example class 实现 C...你需要做的就是说 implements C。类型变量是完全独立的,与此无关:

public class Example implements C { ... }

但是看着你的 class 签名:

public class Example<E extends B&A> implements C

E 是一个类型变量,它允许您处理对实现 BA(但不是 C)的 classes 的引用。

例如Example中有一个方法以E作为参数:

void someMethod(E e)

那么你可以在它的正文中包含以下内容:

void someMethod(E e) {
  e.a();  // OK.
  e.b();  // OK.
  // e.c();  // Compiler error, E doesn't implement C.
}