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

原创 2015年07月06日 21:06:36

调用类的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;
	}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/nicolas9974/article/details/46779101

用C#实现封装

本课程主要讲解了C#中属性的封装,方法的应用,构造函数的重载,以及值传递和引用传递的区别。在学习本课程之前需要掌握一定的基础知识。
  • 2017年07月23日 16:27

Java 基础加强 - JavaBean与内省操作

Java基础加强JavaBean与内省操作 一.JavaBean 1.     什么叫做JavaBean? JavaBean是一种特殊的Java类,主要用于传递数据信息,这种Java类中的方法主要用于...
  • hua631150873
  • hua631150873
  • 2013-09-18 22:19:01
  • 1618

《JavaBean》-----Java的内省机制

在之前做过的项目中,都涉及到了前后台的交互,当我们将前台页面上获得的参数传递到后台的时候,我们可以利用很多方法,譬如用Ajax的表单提交,或者直接用JQuery封装的Ajax传递。当我们传递到后台的时...
  • u013067402
  • u013067402
  • 2016-08-05 20:26:06
  • 1504

Java的反射和内省的区别

反射 反射就是运行时获取一个类的所有信息,可以获取到.class的任何定义的信息(包括成员 变量,成员方法,构造器等) 可以操纵类的字段、方法、构造器等部分。 内省 内省基于反射实现,主要...
  • zhanjixun
  • zhanjixun
  • 2017-03-30 00:00:13
  • 2102

通过内省机制设置JavaBean

一、步骤:   1)使用PropertyDescriptor类获取属性描述者对象 //pd引用Student的name属性 PropertyDescriptor pd = new Prope...
  • u012986057
  • u012986057
  • 2016-01-23 16:41:55
  • 342

java 反射(Reflection)和内省(Introspector)

总论: java中所有对象(object)不是引用类型(reference)就是基本类型(primitive)。不管什么类型对象,java虚拟机都会为之实例化一个 java.lang.Class的不可...
  • sam_linux
  • sam_linux
  • 2013-10-21 21:45:52
  • 1914

使用内省方式操作JavaBean

内省,英文中称作introspector。主要对javaBean进行操作,JavaBean是一个特殊的Java类,该类中方法名符合特定的规则(其实就是getXXX,setXXX),我们一般是利用get...
  • u012702547
  • u012702547
  • 2015-04-29 16:16:09
  • 6108

程序设计的基本原则:内省和反射

经常在程序中,我们有时需要有关数据 - 例如,它们是什么类型的,还是类(OOP)的一个实例。基于这一认识,我们需要进行一些这些操作,甚至改变他们 - 但必要的各种数据,我们可能没有!如果你不明白,不要...
  • sergeycao
  • sergeycao
  • 2017-01-18 09:58:12
  • 503

内省 + 反射(简单应用实现原理)

当我们需要封装从页面传递到后台的请求参数时,简单的方式就是使用一个工具类帮我们封装,省很多力气,还不容易出错。那接下来就简单介绍下这个BeanUtils工具类的实现原理,顺便重温下java内省机制。 ...
  • java__project
  • java__project
  • 2016-12-24 22:55:38
  • 631

Java反射与内省的区别

Java反射和内省的关系
  • u011446250
  • u011446250
  • 2016-06-20 19:16:29
  • 748
收藏助手
不良信息举报
您举报文章:JavaBean 用反射自己实现简单内省操作 基础
举报原因:
原因补充:

(最多只允许输入30个字)