0

次の 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>>(); 
    }
}
4

2 に答える 2

4

汎用パラメーターと適切な制約を指定してから、それらを追加で使用する必要があります。

public class BookKeeping<K extends Money, T extends Transaction<K>> { ... }
于 2012-06-15T16:38:12.253 に答える
-2

public class BookKeeping<K ,T extends Transaction<K extends Money>> { ... }

Kジェネリックをネストまたは使用する前に、「宣言」する必要があります。ローカル変数と同じルールです。

于 2012-06-15T16:30:38.047 に答える