不能,因为需要指定 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;
}
}
但它“闻起来”很糟糕,因为示例方法给人一种类方法的感觉,而不是实例方法。做什么是你的选择。