ホームページ >Java >&#&チュートリアル >Java リフレクションを学ぶ 3 つの方法
Java リフレクションの 3 つの戦略を習得するには、具体的なコード例が必要です
はじめに:
Java リフレクションは、プログラムの動的アクセスと操作を可能にする強力なプログラミング テクノロジです。クラスの構造とメソッドを分析してオブジェクトを抽出します。 Java リフレクション テクノロジを習得すると、コードの柔軟性とスケーラビリティが向上するだけでなく、複雑な設計パターンを実装することもできます。この記事では、一般的に使用される 3 つの Java リフレクション戦略を紹介し、具体的なコード例を示します。
public class ReflectionExample { public static void main(String[] args) { // 获取类的基本信息 Class<Person> personClass = Person.class; System.out.println("类名:" + personClass.getName()); System.out.println("父类名:" + personClass.getSuperclass().getName()); // 获取类的成员变量信息 Field[] fields = personClass.getDeclaredFields(); System.out.println("成员变量:"); for (Field field : fields) { System.out.println(field.getName() + ",类型:" + field.getType().getName()); } // 获取类的构造方法信息 Constructor[] constructors = personClass.getConstructors(); System.out.println("构造方法:"); for (Constructor constructor : constructors) { System.out.println(constructor.getName() + ",参数个数:" + constructor.getParameterCount()); } // 获取类的方法信息 Method[] methods = personClass.getMethods(); System.out.println("方法:"); for (Method method : methods) { System.out.println(method.getName() + ",返回类型:" + method.getReturnType().getName()); } } } class Person { private String name; private int age; public Person() {} public Person(String name, int age) { this.name = name; this.age = age; } public void sayHello() { System.out.println("Hello, I'm " + name); } }上記のコードは、最初に
Person クラスの Class オブジェクトを取得し、次に名前と親クラスを取得します。 Class オブジェクト、メンバー変数、コンストラクター、メソッド、その他の情報を介してクラスの情報を取得し、1 つずつ出力します。
Person オブジェクトを作成する方法を示しています。
public class ReflectionExample { public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException { // 获取类的构造方法 Class<Person> personClass = Person.class; Constructor<Person> constructor = personClass.getConstructor(String.class, int.class); // 创建对象 Person person = constructor.newInstance("John", 25); System.out.println(person.getName()); } } class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } }上記のコードでは、
Person クラスのコンストラクター メソッドがリフレクションを通じて取得されます
Constructorconstructor = personClass.getConstructor(String.class, int.class); 次に、コンストラクター メソッドを使用して
person object
person person =constructor.newInstance を作成します。 (「ジョン」、25);。
Person クラスの
sayHello メソッドを呼び出す方法を示しています。
public class ReflectionExample { public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException { // 获取类的方法 Class<Person> personClass = Person.class; Method sayHelloMethod = personClass.getMethod("sayHello"); // 创建对象 Person person = new Person(); // 调用方法 sayHelloMethod.invoke(person); } } class Person { public void sayHello() { System.out.println("Hello, I'm a person."); } }上記のコードでは、
Person クラスメソッド
Method SayHelloMethod = personClass.getMethod("sayHello"); は、リフレクションを通じて取得され、
Method SayHelloMethod = personClass.getMethod("sayHello"); によって
person オブジェクトが作成され、
sayHellomethod
が呼び出されます。 SayHelloMethod.invoke (人);
結論:
以上がJava リフレクションを学ぶ 3 つの方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。