Java リフレクション メカニズムにより、メソッドやメンバー変数を含むクラス情報の動的なアクセスと操作が可能になります。メソッドを取得するには、getMethods()、getReturnType()、および getParameterTypes() メソッドを使用できます。メンバー変数を取得するには、getFields() メソッドと get() メソッドを使用できます。 注釈を取得するには、getAnnotations() メソッドを使用できます。パラメータと戻り値の型を取得するには、getParameterTypes() メソッドと getReturnType() メソッドを使用できます。実際には、Person クラスのメンバー変数とメソッドは、リフレクション機構を通じて動的に取得できます。
Java リフレクション メカニズム: クラス メソッドとメンバー変数の取得
リフレクション メカニズムは、Java の強力なメカニズムであり、動的にメソッドやメンバー変数などのクラス情報にアクセスして操作します。
クラスのメソッドを取得する
クラスのすべてのメソッドを取得するには、getMethods()
メソッド:
Class<?> clazz = MyClass.class; Method[] methods = clazz.getMethods();
If 特定のタイプのメソッドのみを取得したい場合は、オーバーロードされた getMethods()
メソッドを使用できます。たとえば、次のようになります。
Method[] getDeclaredMethods = clazz.getDeclaredMethods(); Method[] getPublicMethods = clazz.getMethods();
メソッド パラメーターを取得するクラスの戻り値の型
メソッドのパラメーターと戻り値の型を取得するには、getParameterTypes()
と getReturnType()
を使用できます。メソッド:
Method method = clazz.getMethod("myMethod"); Class<?>[] parameterTypes = method.getParameterTypes(); Class<?> returnType = method.getReturnType();
クラスのメソッド アノテーションを取得します。
メソッド アノテーションを取得するには、getAnnotations()
と getAnnotation を使用できます。 ()
methods:
Annotation[] annotations = method.getAnnotations(); Annotation annotation = method.getAnnotation(MyAnnotation.class);
クラス変数のメンバーの取得
クラスのすべてのメンバー変数を取得するには、getFields( )
メソッド:
Field[] fields = clazz.getFields();
特定の型または可視性のメンバー変数のみを取得したい場合は、オーバーロードされた getFields()
メソッドを使用できます。例:
Field[] getDeclaredFields = clazz.getDeclaredFields(); Field[] getPublicFields = clazz.getFields();
クラスのメンバー変数値を取得します
メンバー変数の値を取得しますget()
メソッドを使用します:
Field field = clazz.getField("myField"); Object value = field.get(myObject);
実際的なケース
次の例を考えてみましょう。クラス Person
メソッドとメンバー変数を動的に取得したいと考えています。 # メソッドとメンバー変数:
import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang.reflect.Modifier; public class Main { public static void main(String[] args) { Class<?> clazz = Person.class; // 获取类的方法 for (Method method : clazz.getMethods()) { System.out.println("Method: " + method.getName()); System.out.println("Modifiers: " + Modifier.toString(method.getModifiers())); // 获取方法参数和返回值类型 System.out.println("Parameters:"); for (Class<?> parameterType : method.getParameterTypes()) { System.out.println(" - " + parameterType.getName()); } System.out.println("Return type: " + method.getReturnType().getName()); // 获取方法注解 for (Annotation annotation : method.getAnnotations()) { System.out.println("Annotation: " + annotation.annotationType().getName()); } System.out.println(); } // 获取类的成员变量 for (Field field : clazz.getDeclaredFields()) { System.out.println("Field: " + field.getName()); System.out.println("Modifiers: " + Modifier.toString(field.getModifiers())); System.out.println("Type: " + field.getType().getName()); System.out.println(); } } } class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + "]"; } }
このコードは動的に取得します。クラス Person
のすべてのメソッドとメンバー変数を出力します。
以上がJava リフレクション メカニズムはどのようにしてクラス メソッドとメンバー変数を取得しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。