java 内省

用内省来操作Bean会给程序带来很大的便利,特别是在很大的实体对象的时候,在其属性很多的时候要为其赋值的时候,

package com.bean;

public class User {

	private String uid;
	private String userName;
	private String userPass;
	private String age;
	private String sex;

	public User(){}

	public String getUid() {
		return uid;
	}
	public void setUid(String uid) {
		this.uid = uid;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getUserPass() {
		return userPass;
	}
	public void setUserPass(String userPass) {
		this.userPass = userPass;
	}
	public String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public User(String uid, String userName, String userPass, String age,
			String sex) {
		super();
		this.uid = uid;
		this.userName = userName;
		this.userPass = userPass;
		this.age = age;
		this.sex = sex;
	}

	@Override
	public String toString() {
		return "User [uid=" + uid + ", userName=" + userName + ", userPass="
				+ userPass + ", age=" + age + ", sex=" + sex + "]";
	}

}

  

package com.bean;

import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.InvocationTargetException;

public class beanUtils {

	/**
	 * java内省
	 * @param args
	 * @throws IntrospectionException
	 * @throws InvocationTargetException
	 * @throws IllegalArgumentException
	 * @throws IllegalAccessException
	 */
	public static void main(String[] args) throws IntrospectionException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
		BeanInfo beanInfo = Introspector.getBeanInfo(User.class, Object.class);
		PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
		User user = new User();
		for(PropertyDescriptor pd : pds){
			System.out.println(pd.getName());
		}
		PropertyDescriptor pd = new PropertyDescriptor("age", User.class);
		pd.getWriteMethod().invoke(user, "22");
		System.out.println(pd.getReadMethod().invoke(user));

	}
}

  

age
sex
uid
userName
userPass
22

  

时间: 2025-01-10 05:44:00

java 内省的相关文章

Java 内省 Introspector

操纵类的属性,有两种方法 反射 内省 面向对象的编程中,对于用户提交过来的数据,要封装成一个javaBean,也就是对象 其中Bean的属性不是由字段来决定的,而是由get和Set方法来决定的 public class Person { private String name ; private String password; private int age; public String getName() { return name; } public void setName(String

Java内省技术

-------<a href="http://www.itheima.com/"">android培训</a>.<a href="http://www.itheima.com/" ">java培训</a>期待与您交流!---------- JavaBean类: 在Java中有一种特殊的类,它用于程序中两个模块的信息交换.它的特点是将成员变量私有化.用getter和setter方法获取设置其成员变量的

Java内省

大家都知道,Java给我提供了反射机制,使我们可以获取到每一个类的每一个属性和方法,并对此进行操作.但是利用反射来操作对象时过于麻烦,所以sun公司就基于反射机制给大家提供了一个更加简单实用的api,那就是内省(Introspector),而内省这套api将会使我们操作JavaBean的属性更加方便. 1.什么是Javabean? ①类必须是公共的 ②类必须具备无参构造器 2.什么是Javabean的属性? 要理解内省的概念,我们先来理解一下什么叫Javabean的属性,下面我们猜下该Javab

java内省(Introspector)

内省(Introspector) 是Java 语言对 JavaBean 类属性.事件的一种缺省处理方法. JavaBean是一种特殊的类,主要用于传递数据信息,这种类中的方法主要用于访问私有的字段,且方法名符合某种命名规则.如果在两个模块之间传递信息,可以将信息封装进JavaBean中,这种对象称为"值对象"(Value Object),或"VO".方法比较少.这些信息储存在类的私有变量中,通过set().get()获得 Java JDK中提供了一套 API 用来访

java内省机制

一.概念 内省(Introspector) 是Java 语言对 JavaBean 类属性.事件的一种缺省处理方法. JavaBean是一种特殊的类,主要用于传递数据信息,这种类中的方法主要用于访问私有的字段,且方法名符合某种命名规则.如果在两个模块之间传递信息,可以将信息封装进JavaBean中,这种对象称为“值对象”(Value Object),或“VO”.方法比较少.这些信息储存在类的私有变量中,通过set().get()获得.通俗地讲,每一对set/get方法都是对应的javaBean的一

java内省小记

//为了让程序员更好的操作javabean的属性,JDK提供了一套API用来访问某个属性的setter或getter方法.这就是内省 //内省(Introspector)是java语言对javabean类属性,方法和事件的一种标准处理方式. //内省访问javabean有两种方法. //设置javaBean属性值. public static void main(String[] args) throws Exception { //1.方式一 /*//实例化一个person对象 Person

Java:内省(Introspector)深入理解

内省(Introspector) 是Java 语言对 JavaBean 类属性.事件的一种缺省处理方法. JavaBean是一种特殊的类,主要用于传递数据信息,这种类中的方法主要用于访问私有的字段,且方法名符合某种命名规则.如果在两个模块之间传递信息,可以将信息封装进JavaBean中,这种对象称为"值对象"(Value Object),或"VO".方法比较少.这些信息储存在类的私有变量中,通过set().get()获得. 例如类UserInfo : package

java内省机制Introspector

访问JavaBean属性的两种方式 1)直接调用bean的setXXX或getXXX方法: 2)通过内省技术访问(java.beans包提供了内省的API),内省技术访问也提供了两种方式: a)通过PropertyDescriptor类操作Bean的属性: b)通过Introspector类获得Bean对象的 BeanInfo,然后通过 BeanInfo 来获取属性的描述器( PropertyDescriptor ),通过这个属性描述器就可以获取某个属性对应的 getter/setter 方法,

Java内省详解

内省和反射有什么区别: 反射式在运行状态把Java类中的各种成分映射成相应的Java类,可以动态的获取所有的属性以及动态调用任意一个方法,强调的是运行状态.  内省机制是通过反射来实现的,BeanInfo用来暴露一个bean的属性.方法和事件,以后我们就可以操纵该JavaBean的属性. 1.通过PropertyDescriptor修改属性方式 1 public class BeanInfoUtil { 2 public static void setProperty(UserInfo user