反射操作get、set方法
程序员文章站
2022-05-24 09:41:41
...
反射操作get、set方法
今天学习到了一个工具类PropertyDescriptor,通过它我们可以更方便反射get、set方法,类的完整包路径如下:java.beans.PropertyDescriptor
import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
/**
* 反射操作类,通过bean工具类更简单的操作get、set方法
*
* @author chinoukin
*
*/
public class RefelectTest {
public static void main(String[] args)
throws IntrospectionException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
Student s = new Student();
s.setName("张三");
s.setAge(20);
String propertyName = "name";
Object retVal = getPropertyVal(propertyName, s);
System.out.println(retVal);
String newVal = "李四";
setPropertyVal(propertyName, s, newVal);
System.out.println(s.getName());
}
private static void setPropertyVal(String propertyName, Object s, Object newVal)
throws IntrospectionException, IllegalAccessException, InvocationTargetException {
PropertyDescriptor pd = new PropertyDescriptor(propertyName, s.getClass());
Method setMethod = pd.getWriteMethod();
setMethod.invoke(s, newVal);
}
private static Object getPropertyVal(String propertyName, Object s)
throws IntrospectionException, IllegalAccessException, InvocationTargetException {
PropertyDescriptor pd = new PropertyDescriptor(propertyName, s.getClass());
Method getMethod = pd.getReadMethod();
Object retVal = getMethod.invoke(s);
return retVal;
}
}
/**
* javabean
*
* @author chinoukin
*
*/
class Student {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
上一篇: LeetCode:Find Bottom Left Tree Value
下一篇: 队列小实现
推荐阅读
-
PHP魔术方法__GET、__SET使用实例
-
mysql存储过程之创建(CREATE PROCEDURE)和调用(CALL)及变量创建(DECLARE)和赋值(SET)操作方法
-
使用lombok.Data编译时无法找到get/set方法
-
JavaScript中set与get方法用法示例
-
ios-set和get方法
-
php中的魔术方法__call(),__clone(),__set(),__get()
-
php反射学习之不用new方法实例化类操作示例
-
PHP的反射动态获取类方法、属性、参数操作示例
-
Python反射和内置方法重写操作详解
-
Android开发中JavaBean不推荐写get/set方法原因