ジェネリック医薬品と静的メソッド:もちろんは、Java、私は補間可能インタフェースの実装クラスのインスタンス間を補間することができ、一般的な補間クラスがしたい
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型から静的に参照することはできません。
しかし、2つの方法はインターフェイスで定義されているため、静的にすることはできません。 Interpolatorで使用するときは、Coordinate(またはInterpolatable)のインスタンスがありません。
提案がありますか?
は(インタフェースメソッドが静的であることができない理由を私は理解して、私はエレガントに、このような問題を解決するためにどのようなアイデアを欠いている。)
あなたのコードは 'static'キーワードを使用していません - コードを正しく投稿したことを確認できますか? – Bohemian
@Bohemian彼はインスタンスからではなく、タイプ(クラス)自体(v.g.、T.getDimension())からメソッド.getIteratorまたは.getDimensionを使用しています。 – SJuan76