我想有能的實現插補接口的類實例之間插入一個通用插補類: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)
:
無法從Interpolatable類型對非靜態方法getDimension()/ getIterator(double)進行靜態引用。
但是,這兩種方法不能做成靜態的,因爲它們是在一個接口中定義的。當時我會在Interpolator中使用它們,但我沒有可用的Coordinate(或任何Interpolatable)實例。
有什麼建議嗎?
(我明白爲什麼接口方法不能是靜態的,我只是缺少一個想法如何優雅地解決這樣的問題。)
沒有你的代碼使用'static'關鍵字 - 你可以檢查你已經正確發佈你的代碼? – Bohemian
@Bohemian他從類型(類)本身(例如,T.getDimension())使用方法.getIterator或.getDimension,而不是來自實例。 – SJuan76