ホームページ  >  記事  >  Java  >  リフレクションに基づいてオブジェクトの属性値を取得する Java サンプル コードの共有

リフレクションに基づいてオブジェクトの属性値を取得する Java サンプル コードの共有

黄舟
黄舟オリジナル
2017-03-27 10:09:051401ブラウズ

この記事では、リフレクションに基づいて オブジェクトプロパティの値を取得するための Java のメソッドを主に紹介します。Friends の例に基づいて、リフレクションに基づいてオブジェクトの属性値を取得するための Java の関連する実装方法と操作テクニックを分析します。必要な場合はこの記事を参照してください

この例では、リフレクションに基づいて Java でオブジェクトの属性値を取得する方法を説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

リフレクションメカニズムを通じてオブジェクト内の属性と属性値を取得します。オブジェクト内でプライベートであることは問題ありませんが、場合によっては例外が発生します。他のカテゴリで報告されています。このオブジェクトには次の例があります

/**
* Engine entity. @author MyEclipse Persistence Tools
*/
public class Engine implements java.io.Serializable {
 // Fields
 private Long engineId;
 private String engineName;
 private String engineType;
 // Constructors
 /** default constructor */
 public Engine() {
 }
 /** minimal constructor */
 public Engine(Long engineId) {
 this.engineId = engineId;
 }
 public Engine(String engineName, String engineType) {
 this.engineName = engineName;
 this.engineType = engineType;
 }
 /** full constructor */
 public Engine(Long engineId, String engineName, String engineType) {
 this.engineId = engineId;
 this.engineName = engineName;
 this.engineType = engineType;
 }
 // Property accessors
 public Long getEngineId() {
 return this.engineId;
 }
 public void setEngineId(Long engineId) {
 this.engineId = engineId;
 }
 public String getEngineName() {
 return this.engineName;
 }
 public void setEngineName(String engineName) {
 this.engineName = engineName;
 }
 public String getEngineType() {
 return this.engineType;
 }
 public void setEngineType(String engineType) {
 this.engineType = engineType;
 }
public static void main(String[] args) throws Exception {
 Engine m = new Engine("汽车","发动机");
 Class clazz = m.getClass();
 Field[] f = clazz.getDeclaredFields();
 String[] name = field2Name(f);
 Object[] value = field2Value(f, m);
 showNameAndValue(name, value);
 }
 public static void showNameAndValue(String[] name, Object[] value) {
 for (int i = 0; i < name.length; i++) {
  System.out.println("--" + i + "--");
  System.out.println("name:" + name[i]);
  System.out.println("Value:" + value[i]);
  System.out.println("--   --");
 }
 }
 public static String[] field2Name(Field[] f) {
 String[] name = new String[f.length];
 for (int i = 0; i < f.length; i++) {
  name[i] = f[i].getName();
 }
 return name;
 }
 public static Object[] field2Value(Field[] f, Object o) throws Exception {
 Object[] value = new Object[f.length];
 for (int i = 0; i < f.length; i++) {
  value[i] = f[i].get(o);
 }
 return value;
 }
}

プライベート属性の属性値を呼び出したい場合は、その get メソッドを呼び出す必要があります。具体的なメソッドは次のとおりです。

field2Value メソッドを次のメソッドに変更します。他のクラスでも使用できます プライベート属性値を取得できます

public static Object[] field2Value(Field[] fields, Object o) throws Exception {
 Object[] values = new Object[fields.length];
 Class classType = o.getClass();
 for (int i = 0; i < fields.length; i++) {
  String fieldName = fields[i].getName();
  String firstLetter = fieldName.substring(0, 1).toUpperCase();
  String getMethodName = "get" + firstLetter + fieldName.substring(1);
  Method getMethod = classType.getMethod(getMethodName, new Class[] {});
  values[i] = getMethod.invoke(o, new Object[] {});
 }
 return values;
}

以上がリフレクションに基づいてオブジェクトの属性値を取得する Java サンプル コードの共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。