/*
-----------------------------------
android培训、
java培训、期待与您交流! -----------------------------------
一 JavaBean和内省Introspection 以及BeanInfo
*
*
* 1: JavaBean :一个特殊的类,他
*
* 2: introspection:
*
* 3: beanutils包:导包顺序先把beanutils.jar拷贝到Lib,在点击jar的buildpath直到在Ref
*
*/
public class JavaBeanDemo {
//private static Date birthday = new Date() ;
private int x;
private int y;
一 JavaBean和内省Introspection 以及BeanInfo
*
*
* 1: JavaBean :一个特殊的类,他
*
* 2: introspection:
*
* 3: beanutils包:导包顺序先把beanutils.jar拷贝到Lib,在点击jar的buildpath直到在Ref
*
*/
public class JavaBeanDemo {
//private static Date birthday = new Date() ;
private int x;
private int y;
public static void main(String[] args) throws Exception{
method();
}
public static void method()throws Exception{
JavaBeanDemo jb = new JavaBeanDemo(1, 2);
String propertyName = "x";
//x——x——getX——MetodGetX——
/*PropertyDescriptor pd = new PropertyDescriptor(propertyName,JavaBeanDemo.class );
* 属性描述类
Method methodGetX = pd.getReadMethod();
Object retVal = methodGetX.invoke(jb);//一定是通过一个对象来获取。
System.out.println(retVal);*/
/* //第一种: getX 同一个类的原因无法真确抽取方法
PropertyDescriptor pd = new PropertyDescriptor(propertyName,jb.getClass() );//返回的是属性描述对象
Method methodGetX = pd.getReadMethod();
Object retVal = methodGetX.invoke(jb);//一定是通过一个对象来获取。
System.out.println(retVal);
//第二种 利用BeanInfo 获取普通类的javaBean对象,(就是把它当作JavaBean)
BeanInfo bi = Introspector.getBeanInfo(jb.getClass());
PropertyDescriptor[] pds= bi.getPropertyDescriptors();
for(PropertyDescriptor pdr:pds){
if(pdr.getName().equals(propertyName)){
Method getX = pdr.getReadMethod();
Object obj = getX.invoke(jb);
System.out.print(obj);
}
}
*/
//第三种:利用BeanUtils,报java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory,再把logging
//导入即可
BeanUtils.setProperty(jb, "x", "9");
System.out.print(BeanUtils.getProperty(jb, "x")+"BeanUtils");
/* //setX
*
PropertyDescriptor pd2 = new PropertyDescriptor(propertyName,jb.getClass());
Method methodSetX2 = pd.getWriteMethod();
Object retVal2 = methodGetX.invoke(jb);//一定是通过一个对象来获取。
System.out.println(retVal);*/
//利用BeanUtils代替反射的操作
Day day = new Day();
BeanUtils.setProperty(day, "birthday.time" , "1011");
// System.out.println(day.birthday.getTime());
System.out.println(BeanUtils.getProperty(day, "birthday.time"));
}
method();
}
public static void method()throws Exception{
JavaBeanDemo jb = new JavaBeanDemo(1, 2);
String propertyName = "x";
//x——x——getX——MetodGetX——
/*PropertyDescriptor pd = new PropertyDescriptor(propertyName,JavaBeanDemo.class );
* 属性描述类
Method methodGetX = pd.getReadMethod();
Object retVal = methodGetX.invoke(jb);//一定是通过一个对象来获取。
System.out.println(retVal);*/
/* //第一种: getX 同一个类的原因无法真确抽取方法
PropertyDescriptor pd = new PropertyDescriptor(propertyName,jb.getClass() );//返回的是属性描述对象
Method methodGetX = pd.getReadMethod();
Object retVal = methodGetX.invoke(jb);//一定是通过一个对象来获取。
System.out.println(retVal);
//第二种 利用BeanInfo 获取普通类的javaBean对象,(就是把它当作JavaBean)
BeanInfo bi = Introspector.getBeanInfo(jb.getClass());
PropertyDescriptor[] pds= bi.getPropertyDescriptors();
for(PropertyDescriptor pdr:pds){
if(pdr.getName().equals(propertyName)){
Method getX = pdr.getReadMethod();
Object obj = getX.invoke(jb);
System.out.print(obj);
}
}
*/
//第三种:利用BeanUtils,报java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory,再把logging
//导入即可
BeanUtils.setProperty(jb, "x", "9");
System.out.print(BeanUtils.getProperty(jb, "x")+"BeanUtils");
/* //setX
*
PropertyDescriptor pd2 = new PropertyDescriptor(propertyName,jb.getClass());
Method methodSetX2 = pd.getWriteMethod();
Object retVal2 = methodGetX.invoke(jb);//一定是通过一个对象来获取。
System.out.println(retVal);*/
//利用BeanUtils代替反射的操作
Day day = new Day();
BeanUtils.setProperty(day, "birthday.time" , "1011");
// System.out.println(day.birthday.getTime());
System.out.println(BeanUtils.getProperty(day, "birthday.time"));
}