>Java >java지도 시간 >리플렉션을 기반으로 객체 속성 값을 얻기 위한 Java 샘플 코드 공유

리플렉션을 기반으로 객체 속성 값을 얻기 위한 Java 샘플 코드 공유

黄舟
黄舟원래의
2017-03-27 10:09:051548검색

이 글에서는 리플렉션을 기반으로 객체 속성 값을 얻는 자바의 방법을 주로 소개하고, 리플렉션을 기반으로 하는 자바의 관련 구현 방법과 운용 기법을 분석한다. 예제 형식을 기반으로 객체 속성 값을 제공합니다. 필요한 친구는

을 참조할 수 있습니다. 이 문서의 예제에서는 Reflection을 기반으로 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.