public abstract class AbstractTool<AT extends AbstractThing> {
protected ArrayList<AT> ledger;
public AbstractTool() {
ledger = new ArrayList<AT>();
}
public AT getToolAt(int i) {
return ledger.get(i);
}
// More code Which operates on Ledger ...
}
public class Tool<AT extends AbstractThing> extends AbstractTool {
public Tool() {
super();
}
}
どのように私は正しくAbstractToolコンストラクタにTool
のジェネリックAT
を渡すためにスーパーを呼ぶのですか?スーパー
私がいつも代わりにThing
のAbstractThing
を取り戻すことを、私は私がTool
(セイ、Tool<Thing>
)を宣言するときであることをAT
を選ぶどのような関係なく思いません。これはジェネリック医薬品の目的を破るようだ...
ヘルプ?
実際、この場合、AbstractToolの汎用パラメータの型制約が継承されるため、 'public class Tool extends AbstractTool 'と書くことができます。これは、AbstractToolの定義が 'AbstractThing'ではないジェネリックパラメータを使用してあなたを止めるので、機能的に同等です。 –