通过Java的反射动态调用类的set和get方法

方法一:

 1  public static void main(String[] args) throws Exception {
 2   Class clazz = Class.forName("TaskProvidePropsList");//这里的类名是全名。。有包的话要加上包名
 3   Object obj = clazz.newInstance();
 4   Field[] fields = clazz.getDeclaredFields();
 5   //写数据
 6   for(Field f : fields) {
 7    PropertyDescriptor pd = new PropertyDescriptor(f.getName(), clazz);
 8    Method wM = pd.getWriteMethod();//获得写方法
 9    wM.invoke(obj, 2);//因为知道是int类型的属性,所以传个int过去就是了。。实际情况中需要判断下他的参数类型
10   }
11   //读数据
12   for(Field f : fields) {
13    PropertyDescriptor pd = new PropertyDescriptor(f.getName(), clazz);
14    Method rM = pd.getReadMethod();//获得读方法
15    Integer num = (Integer) rM.invoke(obj);//因为知道是int类型的属性,所以转换成integer就是了。。也可以不转换直接打印
16    System.out.println(num);
17   }
18  }
19 }  
 1 public static void getMethodDemo2() throws Exception {
 2         Class clazz = Class.forName("com.itcast.day26.Person");
 3         //Field field = clazz.getDeclaredField("name");
 4         Object obj = clazz.newInstance();
 5
 6         PropertyDescriptor pd = new PropertyDescriptor("name", clazz);
 7         Method get = pd.getReadMethod();
 8         String name = (String)get.invoke(obj);
 9         System.out.println(name);
10     }

方法二:

1 public Object getValue(Object dto,String name) throws Exception{
2            Method[]  m = dto.getClass().getMethods();
3            for(inti=0;i<m.length;i++){
4            if(("get"+name).toLowerCase().equals(m[i].getName().toLowerCase())){
5                return  m[i].invoke(dto);
6             }
7            }  
时间: 2024-10-20 10:58:00

通过Java的反射动态调用类的set和get方法的相关文章

使用Java的反射功能调用类中的方法

最近一直在搞Java的反射,今天使用反射调用方法时出现了很多问题,主要是没有详细参考官方API.所以走了很多弯路. 所以想把这个例子记下来,供自己也供他人学习. package com.mine.practice.reflect; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; /** * 使用反射调用类中的方法 * @author 2014-11-5 上午10:51:28

http请求POST和GET调用接口以及反射动态调用Webservices类

此代码是API.WebSrvices动态调用的类,做接口调用时很实用. Webservices动态调用使用反射的方式很大的缺点是效率低,若有更好的动态调用webservices方法,望各位仁兄不吝贴上代码. using System; using System.IO; using System.Net; using System.Text; using System.Web; using System.Collections.Generic; using System.CodeDom.Compi

WebService的创建和部署以及通过反射动态调用WebService

一.在ASP.NET中创建WebService 首先我们先创建一个ASP.NET Web应用程序,此处我们以VS2017为例 点击新创建的项目,右键添加新建项,选择Web服务,输入名称点击添加 这样我们的基础的WebService就创建好了 接下来我们填加一个webservice的测试方法,并且打上特性标签WebMethod,只有打上特性标签WebMethod并且访问修饰符设置为public后外部才能调用到该方法 using System; using System.Collections.Ge

Java通过反射机制修改类中的私有属性的值

首先创建一个类包含一个私有属性: class PrivateField{ private String username = "Jason"; } 通过反射机制修改username的值: //创建一个类的对象 PrivateField privateField = new PrivateField(); //获取对象的Class Class<?> classType = privateField.getClass(); //获取指定名字的私有域 Field field =

java.util.concurrent.locks.Lock类的lock和lockInterruptibly方法的区别

什么是可中断的锁获取呢?就是:线程在等待获取锁的过程中,是否能够响应中断,以便在被中断的时候能够解除阻 塞状态,而不是傻傻地一直在等待.java对象的内置锁(synchronized)就是一种不可中断的锁,也就是说如果一个线 程在等待获取某个对象的内置锁,就算是该线程被其他线程中断,该线程仍然继续等待内置锁,而不是解除阻塞状 态,也不会抛出InterruptedException.Lock类的lock()类似synchronized,是不可中断的,在等待获取锁的过程中, 不响应中断请求:lock

Python 之面向对象:类和对象调用类中的变量和方法

面向对象的核心是对象,用对象来操控类里面的方法和变量,加上类还具有继承.封装.多态三大特性,提高了代码的复用性和规范性. 一.对象 调用类中的变量和方法 二 .类  调用类中的变量和方法 原文地址:https://www.cnblogs.com/tianpin/p/11283032.html

java 通过反射获取调用类方法及属性

首先说下反射是什么?反射是Sun公司推出的一组API,此组API位于Java.lang.reflect中 反射的作用是编写工具(例如eclipse),编写框架,当然对于一般的程序,我们不可能用反射来做这些事,一般反射大多是用于在构建类的实例以及调用类方法及属性. ok! 了解了反射是什么以及反射的应用领域,那么就来看看Java中是怎么实现反射的吧 Student类 public class Student {     public String name;     public String g

java通过反射获取调用变量以及方法

一:反射概念 可以通过Class类获取某个类的成员变量以及方法,并且调用之. 二:通过反射获取方法.变量.构造方法 1 @Test 2 // 通过反射获取类定义的方法 3 public void testMethod() throws Exception { 4 @SuppressWarnings("rawtypes") 5 Class clazz = Class.forName("java.lang.String"); 6 Method[] m = clazz.g

.NET简谈反射(动态调用)

我们继续C#基础知识的学习,这篇文章主要要讲的是我们C#程序员迈向高级C#程序员的关键性的一步. 有的朋友会说事实不是这样的,我不用反射就不能开发吗?当然可以,但是用与不用肯定是不一样的,任何复杂抽象的分层架构或者说是复杂的设计模式均是建立在这些基础之上的,比如我们要进行模块化.组件化开发,要严格的消除模块之间的耦合,要进行动态接口调用.这样的强大而灵活的系统开发,必须要用反射才行:任何技术都有它存在的价值和意义,只要我们把它用在合适的位置就能发挥出惊人的力量:能尽可能的减少我们编写的代码,更能