次の Java クラス宣言は正しくありません。
public class BookKeeping<T extends Transaction<K extends Money>> { ... }
ここでは、ジェネリック宣言を使用できませんK extends Money
。
私の質問は、なぜこの宣言が許可されていないのですか? そして、Javaジェネリックを使用してそのようなクラスをどのように宣言する必要がありますか?
解決
class Money {
}
class Dollar extends Money {
}
class Transaction<T extends Money> {
}
public class BookKeeping<K extends Money,T extends Transaction<K>> {
public void foo () {
Dollar d = new Dollar();
Transaction<Dollar> t = new Transaction<Dollar>();
BookKeeping<Dollar, Transaction<Dollar>> b = new BookKeeping<Dollar, Transaction<Dollar>>();
}
}