@634

指定したクラスから情報を取得:java.lang.reflect

Advertisement

リフレクション

java.lang.reflect パッケージを使用する。

コンストラクタの取得

getConstructors() : コンストラクタをすべて取得
getDeclaredConstructors() : アクセス可能なコンストラクタを取得

// インポート
import java.lang.reflect.*;

public class GetConstructor{
    public static void main(String[] args){
        // 対象クラスの設定
        try{
            cls = Class.forName(args[0]);
        //   cls = Class.forName("java.lang.Math");
        }catch(Exception e){
            e.printStackTrace();
        }

//        Constructor[] cons = cls.getConstructors();
        Constructor[] cons = cls.getDeclaredConstructors();
        for(int i = 0; i < cons.length; i++){
            System.out.println(cons[i].toString());
        }
    }
}
実行
>java GetConstructor java.lang.StringBuffer
public java.lang.StringBuffer(java.lang.String)
public java.lang.StringBuffer()
public java.lang.StringBuffer(int)

フィールドの取得

getFields() : フィールドをすべて取得
getDeclaredFields() : アクセス可能なフィールドを取得

// インポート
import java.lang.reflect.*;

public class GetFields{
    public static void main(String[] args){
        // 対象クラスの設定
        try{
            cls = Class.forName(args[0]);
        //   cls = Class.forName("java.lang.Math");
        }catch(Exception e){
            e.printStackTrace();
        }

        Constructor[] cons = cls.getFields();
//        Constructor[] cons = cls.getDeclaredFields();
        for(int i = 0; i < cons.length; i++){
            System.out.println(cons[i].toString());
        }
    }
}
実行
> java GetFields java.lang.Integer
public static final int java.lang.Integer.MIN_VALUE
public static final int java.lang.Integer.MAX_VALUE
public static final java.lang.Class java.lang.Integer.TYPE

メソッドの取得

getMethods() : メソッドをすべて取得
getDeclaredMethods() : アクセス可能なメソッドを取得

// インポート
import java.lang.reflect.*;

public class GetConstructor{
    public static void main(String[] args){
        // 対象クラスの設定
        try{
            cls = Class.forName(args[0]);
        //   cls = Class.forName("java.lang.Math");
        }catch(Exception e){
            e.printStackTrace();
        }

        Constructor[] cons = cls.getMethods();
//        Constructor[] cons = cls.getDeclaredMethod();
        for(int i = 0; i < cons.length; i++){
            System.out.println(cons[i].toString());
        }
    }
}
実行
>java GetMethod java.lang.Object
public native int java.lang.Object.hashCode()
public final native java.lang.Class java.lang.Object.getClass()
public final void java.lang.Object.wait() throws java.lang.InterruptedException
public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException
public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException
public boolean java.lang.Object.equals(java.lang.Object)
public final native void java.lang.Object.notify()
public final native void java.lang.Object.notifyAll()
public java.lang.String java.lang.Object.toString()

Advertisement

ショートカット

634
このカテゴリのトップページに戻る
634labs
   UIコレクションギャラリー

サイト検索

Google

Web サイト内

Y!ログール