Maison  >  Article  >  Java  >  Partage d'exemples de code Java pour obtenir des valeurs d'attribut d'objet basées sur la réflexion

Partage d'exemples de code Java pour obtenir des valeurs d'attribut d'objet basées sur la réflexion

黄舟
黄舟original
2017-03-27 10:09:051525parcourir

Cet article présente principalement la méthode de Java pour obtenir la valeur de l' objet basée sur la réflexion. Il analyse également les méthodes d'implémentation et les techniques d'exploitation pertinentes de Java pour obtenir l'attribut d'objet. valeur basée sur la réflexion sous forme d'exemples., Les amis qui en ont besoin peuvent se référer à

L'exemple dans cet article décrit la méthode d'obtention des valeurs d'attribut d'objet​​en Java basée sur la réflexion. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Obtenez les attributs et les valeurs d'attribut​​dans l'objet via le mécanisme de réflexion. Ce n'est pas un problème d'être privé dans l'objet, mais. parfois des exceptions seront signalées dans d’autres classes. L'exemple suivant se trouve dans cet objet

/**
* 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;
 }
}

Si vous souhaitez appeler la valeur d'attribut d'un attribut privé, vous devez appeler sa méthode get. La méthode spécifique est :

Modifiez le. Méthode field2Value pour De la manière suivante, les valeurs d'attributs privés peuvent également être obtenues dans d'autres classes

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;
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn