Javaリフレクションのフィールドの練習の使用

フィールドそれは何ですか?

クラスフィールドは、次のjava.lang.reflectのパッケージに位置しています。反射のJavaクラス・フィールドはクラスの属性情報に記述されている次のとおりです。

 1:現在のオブジェクトのメンバ変数の型を取得します

 2:メンバ変数の値をリセットします

どのフィールドにそれを使用するには?

 クラスオブジェクトフィールドに取得するための4つの方法

  1:Class.getFields()パブリックプロパティのクラスの種類を取得し、いくつかのフィールドに戻りオブジェクトを含む配列は、アレイは、すべてのアクセス可能なパブリックフィールドのこのオブジェクトが表すクラスまたはインタフェースが含まれています

  2:getDeclaredFields()は、すべてのクラスの属性(プライベート、パブリック、プロテクトデフォルト)を取得しますが、継承された属性が含まれていない、オブジェクトはフィールドの配列を返します。

  3:のgetField(String name)名前パラメータは、プロパティの名前を指定し、クラス固有のメソッドを取得し、

  4:getDeclaredField(String name)名前パラメータは、プロパティの名前を指定し、クラス固有のメソッドを取得します。

フィールドオブジェクトの共通メソッド

  変数の型を取得します。

  Field.getType():変数の型を返します。

  Field.getGenericType:現在のプロパティは、署名されたプロパティタイプを返す場合、それ以外の場合)(Field.getTypeを返します

  isEnumConstant():この属性は、列挙クラスかどうかを決定します

  メンバ変数の修飾子を取得します。

      Java言語修飾子のField.getModifiers()フィールドで識別整数Fieldオブジェクトを返します。

  アクセスとメンバ変数の値を変更

  getName():プロパティの名前を取得します。

  (オブジェクトobj)を取得:戻り値このフィールドで指定したフィールドの値は、オブジェクトobjを示し、

  集合(オブジェクトOBJ、オブジェクト値)このフィールドは、オブジェクトが指定された新しい値で表される指定するオブジェクト変数のフィールドを設定します

一般的なエラー

  ときにセット(オブジェクトOBJ、オブジェクト値)、元の値の型と反射型変換例外が[変数の値を取得したり変更するとき不整合につながる新しい値は、コンパイラが自動的に着脱しないボックス、いくつかのタイプは、それらの変換を必要とします手動]

  集合(オブジェクトOBJ、オブジェクト値)は、生じ可変型変換異常の最終的な種類を変更する場合。原因フィールドがAccessibleObjectから継承された、我々はAccessibleObject.setAccessible()メソッドを使用することができます変数にアクセスすることができ、セキュリティ・メカニズムを伝えます

そのようなfield.setAccessible(真)として、解決することができます。

  getField(文字列名)またはのgetField()非パブリック変数を取得するために、コンパイラが間違ったjava.lang.NoSuchFieldExceptionのを報告します

おすすめ

転載: www.linuxidc.com/Linux/2020-01/161987.htm