私は、他の多くのクラスによって拡張されたCalculatorというクラスを持っています。それは次のように読み込むインターン(と呼ばれるメソッド)を持つ:サブクラス型のオブジェクトを返すスーパークラスのメソッドを宣言できますか?
public DailyValueCalculator intern() {
if (TimeSeriesIterator.containsMatchingCalculator(this)) {
TimeSeriesIterator.removeCalculator(this);
return TimeSeriesIterator.getMatchingCalculator(this);
} else {
return this;
}
}
私は、たとえば、BCと呼ばれるBetaCalculatorを持っている場合、私はそれインターンにできるようにしたいと思い
bc = bc.intern();
を言って私は
bc = (BetaCalculator) bc.intern();
を言っているものの、現在インターン()メソッドは、常にそれが呼び出されたタイプの戻り値の型を持っているなるようにそれを作るための方法はありますか?これを行う方法がない場合、それが不可能な理由はありますか?私はと不満足だけれどもを知ってる
考えられる解決策:私は
はインターン()メソッドのクラスを渡すと、それは返した書き込みすべての計算はインターン()メソッドを書き換え
- Tは、(例えば
< Tは(クラス< T>戻り値の){...}
DailyValを与えるDailyValueCalculator> Tインターンを拡張しますueCalculator a Type < T>(すなわち、 T.
を返す)(
Factoryパターンとイスト変種をチェック... –