您如何使用扩展 <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
是一个类型变量,它允许您处理对实现 B
和 A
(但不是 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.
}
我试图弄清楚如何进行简单的实现,我想,如果接口扩展到另一个接口怎么办? 例如,
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
是一个类型变量,它允许您处理对实现 B
和 A
(但不是 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.
}