UnivariateOperator의 일반 사항을 지정해야하기 때문에 할 수 없습니다. 당신은 샘플 시계열, 당신은
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;
}
}
입니다. 그러나 샘플 메서드는 인스턴스 메서드 대신 클래스 메서드를 사용하기 때문에 "악취"가납니다. 해야 할 일이 무엇인지 선택하는 것입니다.
http://stackoverflow.com/questions/252055/java-generics-wildcards이 작업이 원하는 작업과 유사하지 않습니까? –
코드 예제에서 T는 TimeSeries의 형식이므로 SamplingOperator 형식을 지정하지 않고 TimeSeries 만 지정할 수 있습니다. – Caps
당신의 질문은 혼란 스럽습니다 : 인터페이스는'operateOn' 메쏘드를 가지고 있습니다 만, 서브 클래스는 무언가를 오버라이드하는'sample' 메쏘드를 가지고 있습니다. 전체 서브 클래스를 원하거나'sample'만이 타입에 독립적 이길 원합니까? 어쩌면 SamplingOperator가 UnivariateOperator를 구현해서는 안됩니다. – toto2