JavaBean 用反射自己实现简单内省操作 基础

来源:互联网 发布:北航软件学院研究生院 编辑:程序博客网 时间:2024/06/06 10:38

调用类的get和set方法来获取和设置public变量

package test;import java.beans.IntrospectionException;import java.beans.PropertyDescriptor;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;class Point {private double x;private double y;public double getX() {return x;}public void setX(double x) {this.x = x;}public double getY() {return y;}public void setY(double y) {this.y = y;}/** * @param x * @param y */public Point(double x, double y) {super();this.x = x;this.y = y;}}public class MainTest {public static void main(String[] args) throws IllegalArgumentException, IntrospectionException, IllegalAccessException, InvocationTargetException {Point p = new Point(3, 5);getProperty(p, "x");setProperty(p, "y", 10);}/** * @param p * @param propertyName * @param value * @throws IntrospectionException * @throws IllegalAccessException * @throws IllegalArgumentException * @throws InvocationTargetException */public static void setProperty(Object p, String propertyName, Object value)throws IntrospectionException, IllegalAccessException,IllegalArgumentException, InvocationTargetException {PropertyDescriptor pd = new PropertyDescriptor(propertyName, p.getClass());Method m = pd.getWriteMethod();m.invoke(p, value);}/** * @param p * @param propertyName * @throws IntrospectionException * @throws IllegalAccessException * @throws IllegalArgumentException * @throws InvocationTargetException */public static Object getProperty(Object p, String propertyName)throws IntrospectionException, IllegalAccessException,IllegalArgumentException, InvocationTargetException {PropertyDescriptor pd = new PropertyDescriptor(propertyName, p.getClass());Method m = pd.getReadMethod();Object retValue = m.invoke(p);return retValue;}}

0 0
原创粉丝点击