• 技术文章 >Java >java教程

    java基于反射得到对象属性值的示例代码分享

    黄舟黄舟2017-03-27 10:09:05原创429
    这篇文章主要介绍了java基于反射得到对象属性值的方法,结合实例形式分析了java基于反射获取对象属性值的相关实现方法与操作技巧,需要的朋友可以参考下

    本文实例讲述了java基于反射得到对象属性值的方法。分享给大家供大家参考,具体如下:

    通过反射机制得到对象中的属性和属性值 在对象中private没问题,在别的类中有时会报异常。下面的例子是在本对象中

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

    如果想调用private的属性的属性值,则要调用他的get方法了具体做法是:

    把field2Value方法改为如下方式,这样在别的类中也可以得到private的属性值了

    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中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    上一篇:Java多线程基础详解 下一篇:java中正确使用ThreadLocal的实例代码分析
    大前端线上培训班

    相关文章推荐

    • 理解java8中java.util.function.*pojo反射新方法(附代码)• 浅析安卓app和微信授权登录及分享完整对接(代码分享)• 教你一招搞定时序数据库在Spring Boot中的使用• 一招教你使用java快速创建Map(代码分享)• PlayFramework 完整实现一个APP(十一)

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网