抽象クラスがあります
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
しかし、私は、ここにクラスではなくタイプがあると信じているので、私はできません。私に似たようなことはありますか?