読者です 読者をやめる 読者になる 読者になる
無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

境界ワイルドカードを型パラメータとするインスタンスを作る。

次のようなクラスがあって、

class Foo<X> {
    Foo( Class<X> cl ) {}
}

任意のクラスを引数として、境界ワイルドカードを型パラメータとするFooを作成したい場合、以下のように書くとコンパイルエラーになります。

Class<?> cl = null;
Foo<?> foo = new Foo<?>( cl ); // コンパイルエラー

こういう場合は、以下のようなユーティリティ関数を用意するとうまくかけます。

static <X> Foo<X> foo( Class<X> cl ) {
    return new Foo<X>( cl );
}

ユーティリティを使って

Foo<?> foo = foo( cl );

と書けてコンパイルエラーにもなりません。