Java 采用反射获取class属性值的实现代码_java

原理:Java的反射能够获取属性的名称,然后通过invoke调用类的某个方法。
比如有个属性叫userName,这个类写了个方法叫getUserName,通过invoke调用getUserName这个方法。
代码如下

复制代码 代码如下:

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
public class ParameterBase
{
    /**
     * Get Class field and value Map
     * @return
     */
    public Map<String, String> getClassInfo()
    {
        Map<String ,String>  fieldsAndValues = new HashMap<String, String>();
        Field [] fields = this.getClass().getDeclaredFields();
        for(int i=0; i< fields.length; i++)
        {
            Field f = fields[i];
            String value = getFieldValue(this ,f.getName()).toString();
            fieldsAndValues.put(f.getName(),value);
        }
      return fieldsAndValues;
    } 

   

    private  String getFieldValue(Object owner, String fieldName)
    {
        return invokeMethod(owner, fieldName,null).toString();
    }

   
    /**
     *
     * 执行某个Field的getField方法
     *
     * @param owner 类
     * @param fieldName 类的属性名称
     * @param args 参数,默认为null
     * @return
     */
    private   Object invokeMethod(Object owner, String fieldName, Object[] args)
    {
        Class<? extends Object> ownerClass = owner.getClass();

        //fieldName -> FieldName 
        String methodName = fieldName.substring(0, 1).toUpperCase()+ fieldName.substring(1);

        Method method = null;
        try
        {
            method = ownerClass.getMethod("get" + methodName);
        }
        catch (SecurityException e)
        {
            //e.printStackTrace();
        }
        catch (NoSuchMethodException e)
        {
            // e.printStackTrace();
            return "";
        }

        //invoke getMethod
        try
        {
            return method.invoke(owner);
        }
        catch (Exception e)
        {
            return "";
        }
    }
}

写一个类User继承于ParameterBase并写上一个测试代码

复制代码 代码如下:

public class User extends ParameterBase
{
    String userName ;
    String passWorld;
    public String getUserName()
    {
        return userName;
    }
    public void setUserName(String userName)
    {
        this.userName = userName;
    }
    public String getPassWorld()
    {
        return passWorld;
    }
    public void setPassWorld(String passWorld)
    {
        this.passWorld = passWorld;
    }

    public static void main(String[] args)
    {
        User u = new  User();
        u.passWorld = "123";
        u.userName = "aaaaa";
        System.out.println(u.getClassInfo().toString());

    }
}

程序输出

复制代码 代码如下:

{passWorld=123, userName=aaaaa}

时间: 2024-07-31 03:13:16

Java 采用反射获取class属性值的实现代码_java的相关文章

Java反射之通过反射获取一个对象的方法信息(实例代码)_java

以下代码为一个工具类 package com.imooc.reflect; import java.lang.reflect.Method; public class ClassUtil { public static void printClassMessage(Object obj){ //要获取类的信息,首先要获取类的类类型 Class c = obj.getClass();//传递的是哪个子类的对象,c就是该子类的类类型 //获取类的名称 System.out.println("类的名称

图片- uploadify 带一个值上传文件,JAVA spring MVC 获取不到值?

问题描述 uploadify 带一个值上传文件,JAVA spring MVC 获取不到值? $(document).ready( function() { $('#file_upload').uploadify( { 'swf' : '${root}uploadify/uploadify.swf',//上传按钮的图片,默认是这个flash文件 'uploader' : '${root}importFile', //上传所处理的服务器 'cancelImg' : 'uploadfiy/uploa

JS使用getComputedStyle()方法获取CSS属性值_javascript技巧

在对网页进行调试的过程中,经常会用到js来获取元素的CSS样式,方法有很多很多,现在仅把我经常用的方法总结如下: 1. obj.style:这个方法只能JS只能获取写在html标签中的写在style属性中的值(style="-"),而无法获取定义在<style type="text/css">里面的属性. 复制代码 代码如下: <span style="font-family:Arial;font-size:14px;">

javascript-关于jquery 获取data属性值的问题

问题描述 关于jquery 获取data属性值的问题 <ul class="pics"> <li><a id="img1" href="javascript:choose(1);" title="梦幻玫瑰套装" data-img="1.png">梦幻玫瑰套装</a></li> </ul> function choose(index){

指针-在JAVA中如何获取list的值

问题描述 在JAVA中如何获取list的值 这是来源 @Override public List getYxzyListByYwslidZsk(Long ywslid) { StringBuilder hql = new StringBuilder(); hql.append(" from " + ZSK + " t where t.ywslid = " + ywslid); List list = this.findByQuery(hql.toString());

获取元素样式属性值的js代码

function attrstyle(elem,attr){ if(elem.attr){ //若样式存在于html中,优先获取 return elem.style[attr]; }else if(elem.currentstyle){ //ie下获取css教程属性最终样式(同于css优先级) return elem.currentstyle[attr]; }else if(document.defaultview && document.defaultview.getcomputedst

Java中反射获取私有构造函数、属性、方法

在学习Spring框架基础 Bean包时,写了一个简单的例子,类似如下: package study.spring.bean; public class SimpleBean { private String beanName; private SimpleBean() { System.out.println( " SimpleBean " ); } /** */ /** * @return Returns the beanName. */ public String getBean

C#通过属性名称获取(读取)属性值的方法_C#教程

之前在开发一个程序,希望能够通过属性名称读取出属性值,但是由于那时候不熟悉反射,所以并没有找到合适的方法,做了不少的重复性工作啊! 然后今天我再上网找了找,被我找到了,跟大家分享一下. 其实原理并不复杂,就是通过反射利用属性名称去获取属性值,以前对反射不熟悉,所以没想到啊~ 不得不说反射是一种很强大的技术.. 下面给代码,希望能帮到有需要的人. using System; using System.Collections.Generic; using System.Linq; using Sys

关于jquery 获取radio属性值的问题?

问题描述 大家帮忙看下下面代码,为什么我不能正确获取radio的属性值,每次都是1代码如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><