【Java】getClassメソッドを使ってインスタンスがどのクラス(Class)か調べる!
getClassメソッドを使用することでインスタンスがどのクラス(Class)か調べることができます。
しかし、getClass()メソッドを使用してインスタンス化しようとした場合、型はintなのかString型なのか特定できません。
このような場合はワイルドカードを使って特定できないパラメータ化された型を受け取ります。
今回はgetClassメソッドを使って、インスタンスがどのクラスかを調べていきます。
getClassメソッドとは
getClassメソッドは既に存在するオブジェクトから、そのクラスを取得することができます。
getClassメソッドの書き方
getClass()メソッドの構文は下記となります。
1 |
Class<?> 変数 = オブジェクト.getClass(); |
getClassの前にインスタンスなどのObjectを指定することで指定したObjectのクラスを取得することができます。
また、<?>はワイルドカードと呼ばれ、一時的に変数を保持するだけの場合や、型変数からObject型の値を得るだけのような場合であれば統一した方法で管理することができます。
インスタンスがどのクラスかを調べるサンプルコード
インスタンスがどのクラスかを調べるサンプルコードを紹介します。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
// インスタンスがどのクラスかを調べる public class Main { public static void main(String[] args) throws Exception { //インスタンスを作成 Object objA = "abc"; Object objB = Integer.valueOf(1); String str = "def"; String[] arrayStr = new String[3]; // インスタンスがどのクラスなのか確認 Main.printClass(objA); Main.printClass(objB); Main.printClass(str); Main.printClass(arrayStr); // クラスリテラルで取得したClassを表示 System.out.println(int.class); System.out.println(String.class); System.out.println(Integer[].class); } // パラメータのクラス情報を表示するメソッド public static void printClass(Object obj) { //Classを取得して表示 Class<?> clz = obj.getClass(); System.out.println(clz); } } |
出力結果
class java.lang.String
class java.lang.Integer
class java.lang.String
class [Ljava.lang.String;
int
class java.lang.String
class [Ljava.lang.Integer;
getClassメソッドを使って変数clzでクラスのインスタンスを取得しています。
今回のポイント
getClassメソッドでインスタンスがどのクラスか調べる
インスタンスがどのクラスかを調べるにはgetClassメソッドを使用する
• getClassメソッドを使うことで、「Class」インスタンスを取得できることからインスタンスがどのクラスかを調べることができる
• 配列やプリミティブ型の「Class」インスタンスも取得するにはクラスリテラル(String.classなど)を使用する
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。