package Introspect;
//需求:利用javabean获取类内部的属性
import java.beans.PropertyDescriptor;
import java.io.FileInputStream;
import java.io.InputStream;
import java.lang.reflect.Method;
import java.util.Properties;
public class JavaBeanIntro
{
public static void main(String[] args)throws Exception
{
//利用配置文件读取需要做内省的类
InputStream ips = new FileInputStream("Introspect.properties");
//创建一个新的property 列表
Properties prop = new Properties();
//利用properties里面提供的load工具把读取的文件加载在到新建的prop里
prop.load(ips);
//关闭输入流避免内存泄露
ips.close();
//---------------------------------------------------------------------------
//利用properties中的getProperty来读取需要的键值对
String str = prop.getProperty("className");
//获取内存中这个类对应的字节码
Class class1 = Class.forName(str);
//new出实例对象
Object obj = class1.newInstance();
//利用Javabean中的熟悉描述propetydescriptor对对象实例进行属下描述
PropertyDescriptor pd = new PropertyDescriptor("y", class1);
//-------------------------------------------------------------------------
//获得读取属性值的方法
Method getX=pd.getReadMethod();
int c = (Integer)getX.invoke(obj);
System.out.println("设置前y的值是:......"+c);
//-------------------------------------------------------------------------
//获取设置属性值的方法
Method setX = pd.getWriteMethod();
//设置属性的值
setX.invoke(obj, 11);
//重新获取设置后的属性的值
int d = (Integer)getX.invoke(obj);
System.out.println("设置后y的值是:......"+d);
}
}
|
|