本帖最后由 颜小飞 于 2011-11-26 16:46 编辑
建议你把张老师的视频教程再看一遍吧!最重要的是你要把反射理解清楚。下面是我做的一个小练习
希望对你有帮助- package itcast.reflact;
- import itcast.annotationStu.NewAnnotation;
- import itcast.annotationStu.TestAnnotation;
- import java.beans.IntrospectionException;
- import java.beans.PropertyDescriptor;
- import java.lang.annotation.Annotation;
- import java.lang.reflect.InvocationTargetException;
- import java.lang.reflect.Method;
- /*
- * java内省学习,读取javabean
- */
- @TestAnnotation(color="green",intAttr={1},atton=@NewAnnotation("新的注解"))
- public class InstroSpectorStu {
- /**
- * @param args
- * @throws IntrospectionException
- */
- public static void main(String[] args) throws IntrospectionException {
- // TODO Auto-generated method stub
- //声明一个javabean,然后再来读取它的方法的返回值
- PointReflact pr=new PointReflact(12, 89);
- //声明一个propertyDescriptor属性描述类
- String propertyName="x";//声明一个属性
- //得到x的属性描述类
- PropertyDescriptor pdget=new PropertyDescriptor(propertyName, pr.getClass());
- Method read=pdget.getReadMethod();//得到get方法
- try {
- System.out.println(read.invoke(pr));//获得pr实体类的“x”属性的值
- } catch (IllegalArgumentException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (InvocationTargetException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- //设置“x”的值
- PropertyDescriptor pdset=new PropertyDescriptor(propertyName, pr.getClass());
- Method write=pdset.getWriteMethod();//获得这个javabean的propertyName属性的set方法
- try {
- write.invoke(pr, 44);//给x属性赋值
- System.out.println(pr.getX());
- } catch (IllegalArgumentException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (InvocationTargetException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
-
- }
复制代码 |