ホームページ >Java >&#&チュートリアル >Java リフレクション メカニズムは列挙型をどのように処理しますか?
Java リフレクション メカニズムは、Class.forName() メソッドを通じて列挙型クラスの Class オブジェクトを取得し、クラスとそのメンバーの検査を可能にします。すべての列挙定数は、enumClass.getEnumConstants() メソッドを通じて取得できます。また、enumClass.getField() メソッドを通じて特定の列挙定数にアクセスし、フィールドとして null を渡してその値を取得することもできます。列挙定数。特定のオブジェクトのインスタンスではありません。
Java リフレクション メカニズムは、実行時にクラスとメソッドを検査および操作する機能を提供します。イントロスペクション、動的プロキシ、コード生成などのタスクによく使用されます。この記事では、列挙型がリフレクション メカニズムとどのように相互作用するかに焦点を当てます。
列挙型クラスの Class オブジェクトを取得するには、以下に示すように、Class.forName()
メソッドを使用できます。 #
Class<?> enumClass = Class.forName("MyEnum");Class オブジェクトを取得したら、リフレクション API を使用してクラスとそのメンバーを検査できます。たとえば、すべての列挙型定数を取得するには、
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 + "\""); } }この例では、トラバーサル列挙型を使用します。クラス内の定数を調べ、その名前をチェックして、指定された名前を持つ列挙定数を見つけます。定数が見つかると、その ordinal() 値が出力されます。
以上がJava リフレクション メカニズムは列挙型をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。