Java リフレクション メカニズムは、Class.forName() メソッドを通じて列挙型クラスの Class オブジェクトを取得し、クラスとそのメンバーの検査を可能にします。すべての列挙定数は、enumClass.getEnumConstants() メソッドを通じて取得できます。また、enumClass.getField() メソッドを通じて特定の列挙定数にアクセスし、フィールドとして null を渡してその値を取得することもできます。列挙定数。特定のオブジェクトのインスタンスではありません。
Java リフレクション メカニズムは、実行時にクラスとメソッドを検査および操作する機能を提供します。イントロスペクション、動的プロキシ、コード生成などのタスクによく使用されます。この記事では、列挙型がリフレクション メカニズムとどのように相互作用するかに焦点を当てます。
列挙型クラスの Class オブジェクトを取得するには、以下に示すように、Class.forName()
メソッドを使用できます。 #
Class<?> enumClass = Class.forName("MyEnum");
enumClass.getEnumConstants() メソッドを使用します。
Object[] enumConstants = enumClass.getEnumConstants();
enumClass.getField() メソッドを使用できます。
Field colorField = enumClass.getField("COLOR");
Field.get() メソッドを使用して取得できます。
String color = (String) colorField.get(null);
null を
get( ) 列挙定数は特定のオブジェクトのインスタンスではないため、メソッド パラメーターが必要です。
enum MyEnum { RED, GREEN, BLUE } public static void main(String[] args) { String colorToFind = "GREEN"; // 获取枚举类的 Class 对象 Class<?> enumClass = Class.forName("MyEnum"); // 查找具有指定名称的枚举常量 Enum> enumConstant = null; for (Object constant : enumClass.getEnumConstants()) { if (constant.name().equals(colorToFind)) { enumConstant = (Enum>) constant; break; } } if (enumConstant != null) { System.out.println("枚举常量 \"" + colorToFind + "\" 的 ordinal(): " + enumConstant.ordinal()); } else { System.out.println("找不到枚举常量 \"" + colorToFind + "\""); } }
以上がJava リフレクション メカニズムは列挙型をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。