【java】之Method和Field反射获取和设置属性值

摘要:
packagecom.javaluna.reflect;importjava.lang.reflect.Field;importjava.lang.reflect.Method;importorg.junit.Test;publicclassReflectDemo01{@Testpublicvoidtest0()throwsException{Personperson=newPerson();pe
packagecom.javaluna.reflect;

importjava.lang.reflect.Field;
importjava.lang.reflect.Method;

importorg.junit.Test;

public classReflectDemo01{
    
    @Test
    public void test0() throwsException{
        Person person=newPerson();
        person.setId(1);
        person.setName("张三");
        person.setAddress("上海");
        Class<? extends Person> c =person.getClass();
        Field[] fields = c.getDeclaredFields();//获取所有属性字段 private public,但是不包含父类
        for(Field f:fields){
            f.setAccessible(true);
            String fieldName=f.getName();
            if(fieldName.equals("address")){
                f.set(person, "北京");//设置属性值
}
            Object fieldVal=f.get(person);//获取属性值
            System.out.println("fieldName = "+fieldName+" fieldVal = "+fieldVal);
        
        }
        //直接获取某个字段值
        Method m=c.getDeclaredMethod("getId");
        System.out.println(m.invoke(person));//获取属性值
        Method m1=c.getDeclaredMethod("setName",String.class);
        m1.invoke(person, "李四");//设置属性值
System.out.println(person.getName());
    }
}

classPerson{
    
    privateInteger id;
    privateString name;
    privateString address;
    
    publicInteger getId() {
        returnid;
    }
    public voidsetId(Integer id) {
        this.id =id;
    }
    publicString getName() {
        returnname;
    }
    public voidsetName(String name) {
        this.name =name;
    }
    publicString getAddress() {
        returnaddress;
    }
    public voidsetAddress(String address) {
        this.address =address;
    }
    
}

关于反射详解:http://www.cnblogs.com/onlywujun/p/3519037.html

免责声明:文章转载自《【java】之Method和Field反射获取和设置属性值》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇微信小程序中-折线图SQL语法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用C++ 实现的 websocket 客户端 (基于easywsclient)

直接上代码 easywsclient.hpp #ifndef EASYWSCLIENT_HPP_20120819_MIOFVASDTNUASZDQPLFD #define EASYWSCLIENT_HPP_20120819_MIOFVASDTNUASZDQPLFD // This code comes from: // https://github.co...

一步一步实战扩展 ASP.NET Route,实现小写 URL、个性化 URL

一步一步实战扩展 ASP.NET Route,实现小写 URL、个性化 URL 介绍   不知道大家在使用 ASP.NET MVC 时有没有一些扩展要求,反正我是有很多。在使用 MVC 这几年(PS:我是从 1.0 开始学,2.0、3.0 开发至今),我深深地觉得 MVC 的扩展性真是太好了,几乎你大部分的“合理”需求,用 MVC 都能实现。好了,废话不多...

Hive metastore源码阅读(一)

不要问我为什么,因为爱,哈哈哈哈。。。进入正题,最近做项目顺带学习了下hive metastore的源码,进行下知识总结。 hive metastore的整体架构如图: 一、组成结构: 如图我们可以看到,hive metastore的组成结构分为 客户端 服务端 ,那么下来我们逐一进行分析: 1、客户端 从代码的角度来看:尼玛太多了。。我们从入口HIV...

Quartz+Spring 实现定时任务的 管理和监控

 0,监控的意义 (1)能够查看有多少定时任务,用的什么执行策略,便于管理 (2)能够通过界面操作停止或启动某个定时任务,便于管理 (3)能够通过界面操作改变某个定时任务的执行策略,便于管理 1,pom.xml 文件添加jar 1 <!-- quartz监控 --> 2 <dependency> 3 <gro...

CORS跨域实现思路及相关解决方案

本篇包括以下内容: CORS 定义 CORS 对比 JSONP CORS,BROWSER支持情况 主要用途 Ajax请求跨域资源的异常 CORS 实现思路 安全说明 CORS 几种解决方案 自定义CORSFilter Nginx 配置支持Ajax跨域 支持多域名配置的CORS Filter keyword:cors,跨域,ajax,403,fi...

c# 扩展方法 奇思妙用 高级篇 九:OrderBy(string propertyName, bool desc)

下面是 Queryable 类 中最常用的两个排序的扩展方法: 1 2 public static IOrderedQueryable<TSource> OrderBy<TSource, TKey>(this IQueryable<TSource> source, Expression<Func<T...