いくつかの Java インターフェイス/ABC/クラスがあります。
public abstract class Target {
public abstract void fire(Load load);
}
public class HttpTarget extends Target {
@Override
public void fire(Load load) {
// ...
}
}
public interface Load {
// ...
}
public class HttpLoad implements Load {
// ...
}
// Inside a driver
Target target = testSuite.getTarget();
Load load = testSuite.getLoad();
target.fire(load);
したがって、本質的にはTarget
缶fire()
ですLoad
。私のメイン アプリは、 によって返されるの種類やによって返されるDriver
の種類は気にしません。その仕事は、負荷が確実に発射されるようにすることです。Target
getTarget()
Load
getLoad()
fire()
内部のメソッド定義を次のように変更したいと思いHttpTarget
ます。
@Override
public void fire(HttpLoad httpLoad) {
// ...
}
Target
しかし、私がそうすると、Java は、メソッドのオーバーライドがその親クラスによって提供される定義と一致しないと不平を言います(Load
とHttpLoad
は 2 つの異なるものです)。
ここでの解決策は何ですか?ジェネリック?抽象工場?最終的には、のメソッドが のみを受け入れるように強制できるようにしたいと考えていますが、それでもコードと互換性があります。HttpTarget
fire()
HttpLoad
Driver
誰かがコード例を提供できますか? 前もって感謝します!