제네릭 및 정적 방법 : 물론자바, 나는 Interpolatable 인터페이스를 구현하는 클래스의 인스턴스 보간 수있는 일반적인 보간 클래스 싶은
interface Interpolatable {
int getDimension();
Iterator <? extends Interpolatable> getIterator(double d);
}
class Coordinate extends AnotherClass implements Interpolatable {
public int getDimension() {return 3;}
public Iterator <Coordinate> getIterator (double d) {…}
}
class Interpolator <T extends Interpolatable> {
Interpolator() {
int dim = T.getDimension();
}
void doSomething (double d) {
Iterator <? extends Interpolatable> it = T.getIterator(d);
Interpolatable t = it.next();
…
}
}
는, 컴파일러에 대한 T.getDimension()
및 T.getIterator(d)
을 불평 :
비 정적 메소드 getDimension()/getIterator (double)에 대한 정적 참조를 Interpolatable 유형에서 만들 수 없습니다.
그러나 인터페이스에 정의되어 있기 때문에 두 가지 방법을 정적으로 설정할 수 없습니다. 그리고 Interpolator에서 사용할 때, 나는 Coordinate (또는 Interpolatable) 인스턴스를 사용할 수 없습니다.
제안 사항?
는 (인터페이스 메소드는 정적 일 수없는 이유를 이해, 난 그냥 우아하게 이런 문제를 해결하는 방법을 생각이 부족하다.)
당신의 코드는'static' 키워드를 사용하지 않습니다 - 당신이 올바르게 코드를 게시했는지 확인할 수 있습니까? – Bohemian
@ 보헤미안 그는 인스턴스가 아닌 유형 (클래스) 자체 (v.g., T.getDimension())에서 .getIterator 또는 .getDimension 메소드를 사용하고 있습니다. – SJuan76