有人可以帮我为下面的代码编写模型吗?
public class B extends A()
{
public void dial()
{
C c =new C();
c.command();
}
}
答案 0 :(得分:0)
您不能那样做,因为您必须严格使用“真正的” C类。
相反,请向Supplier<C>
的构造函数提供Supplier<? extends C>
(或更常见的是B
):
public class B extends A
{
private final Supplier<? extends C> cSupplier;
public B(Supplier<? extends C> cSupplier) {
this.cSupplier = cSupplier;
}
public void dial()
{
C c = cSupplier.get();
c.command();
}
}
现在您可以传入供应商的实例:
// In production code:
B b = new B(C::new);
// In test code:
B b = new B(() -> mock(C.class));