1
public interface UnivariateOperator<T> {
    public TimeSeries<T> operateOn(TimeSeries<T> timeseries);
}

public class SamplingOperator<T> implements UnivariateOperator<T>  {    
    @Override
    public TimeSeries<T> sample(TimeSeries<T> timeseries) {
        ...
    }
}

ワイルドカードを使用して、サンプリング オペレーターが任意の型を操作できるようにする方法はありますか? サンプリング演算子の型を指定する必要はありません...型付きの時系列で動作するはずです。

4

3 に答える 3

0

UnivariateOperator のジェネリックを指定する必要があるため、できません。TimeSeries をサンプリングするジェネリック メソッドだけが必要な場合は、次のようなものが必要になります。

public class TimeSeriesSampler {
    public static <T> TimeSeries<T> sample(TimeSeries<T> timeseries) {
        ...
    }
}

ただし、SamplingOperator で UnivariantOperator を実装する場合は、ジェネリックを指定する必要があります。それでも指定したくない場合は、次のように使用できます

public class SamplingOperator implements UnivariateOperatior<Object> {
    private SamplingOperator(){
    }
    public <T> TimeSeries<T> sample(TimeSeries<T> timeseries) {
        return null;
    }
    @Override
    public TimeSeries<Object> operateOn(TimeSeries<Object> timeseries) {
        ...
    }
 }

ただし、ジェネリックの力は失われます。別の方法は

public class SamplingOperator<S> implements UnivariateOperatior<S> {
    private SamplingOperator(){
    }
    public <T> TimeSeries<T> sample(TimeSeries<T> timeseries) {
        return null;
    }
    @Override
    public TimeSeries<S> operateOn(TimeSeries<S> timeseries) {
        return timeseries;
    }
}

しかし、サンプルメソッドはインスタンスメソッドではなくクラスメソッドの感覚を与えるため、「臭い」がします。何をするかはあなたの選択です。

于 2012-03-13T23:42:06.397 に答える
0

次のようなことをしたらどうでしょうか。

public class SamplingOperator<T> implements UnivariateOperator<T>  {   
    private SamplingOperator(){
    }

    @Override
    public TimeSeries<T> sample(TimeSeries<T> timeseries) {
        ...
    }

    public static SamplingOperator<? extends Object> getInstance() {
        return new SamplingOperator<Object>();
    }
}

これにより、 の任意のインスタンスが、そのメソッドへの引数としてSamplingOperator任意のタイプの を受け入れることができるようになります。TimeSeriessample

おそらくもっと良い解決策があるでしょうが、これはうまくいくでしょう。

于 2012-03-14T00:01:13.037 に答える
-2
implements UnivariateOperator<Object>
于 2012-03-13T23:37:37.957 に答える