我有一个抽象类
public abstract class Integrator {
public abstract Point integrate();
public abstract Point function(Double x, Point y);
}
由
public abstract class Euler extends Integrator {
public Point integrate() {
... // this calls function(x, y)
}
}
public abstract class Central extends Integrator {
public Point integrate() {
... // this calls function(x, y)
}
}
两者的实现integrate()
方式不同。现在,我实例化的具体类是这样定义的
public class EulerIVP extends Euler {
public EulerIVP(...) { ... }
public Point function(Double x, Point y) {
...
}
}
public class CentralIVP extends Central {
public CentralIVP(...) { ... }
public Point function(Double x, Point y) {
...
}
}
它们都以function()
完全相同的方式实现,但将使用其父级的integrate()
. 因为它们都扩展一个Euler
类是没有意义的。所以我希望我能做这样的事情Central
abstract
IVP
public class IVP<T extends Integrator> extends T {
public IVP(...) { ... }
public Point function(Double x, Point y) { ... }
}
Integrator eulerIntegrator = new IVP<Euler>(...);
Integrator centralIntegrator = new IVP<Central>(...);
但我不能,因为我相信,T
这里将是一个类型而不是一个类。我可以做类似的事情吗?