【Java】メソッドにクラスを渡す方法

タイトルの通りです。

かなり初歩的なことなのでブログに書くのをためらいましたがド忘れしてしまったので記憶します。。

使わないと忘れちゃいますね。

[スポンサーリンク]

メソッドにクラスを渡す

これでOKです。
ジェネリクスを使用していないので警告がでますが動きます。
ジェネリクスを使用するパターンも続いて残しておきます。

public static void main( String[] args ) {
    pass(String.class);
}

private static void pass(Class c) {
    System.out.println(c.getName());
}
>実行結果
java.lang.String

ジェネリクスを使う

これでOKです。
ただ"?"なのであまり意味はありません。
続いて親が特定のクラスのみを許可するジェネリクスを使ったパターンも残していきます。

public static void main( String[] args ) {
    pass(String.class);
}

private static void pass(Class<?> c) {
    System.out.println(c.getName());
}
>実行結果
java.lang.String

ジェネリクスを使う、その2

親クラスがNumberのクラスのみを許可しています。
StringクラスはNumberを継承していないのでビルドエラーになります。

public static void main( String[] args ) {
    pass(Long.class);
}

private static void pass(Class<? extends Number> c) {
    System.out.println(c.getName());
}
>実行結果
java.lang.Long

Javaのバージョン

今回検証したjavaのバージョンは8です。

さいごに

クラスを渡す方法は初歩的なことですが、使用頻度はそんなに多くはないと思います。

ド忘れしてしまわないように気をつけましょう。

それでは!