Java反射与内省

 1.反射

所有的框架都离不开反射,大名鼎鼎的代理模式是很多框架的实现方式,Struts2拦截器,依赖注入,AOP等等,这些都需要反射。

2.内省

 

package com.jzy.demo;

import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;

public class Demo {
 private String name;

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }
 
 public static void main(String[] args) throws Exception{
        Demo demo = new Demo();
        demo.setName( "Jin Zong Yu" );        

        BeanInfo beanInfo = Introspector.getBeanInfo(demo.getClass(), Object. class );
        PropertyDescriptor[] props = beanInfo.getPropertyDescriptors();
        for ( int i=0;i<props.length;i++){
            System.out.println(props[i].getName()+ "=" +
                    props[i].getReadMethod().invoke(demo, null ));
        }
    }    
}

Struts 中ActionForm的值就是通过内省的方式,调用set方法,从画面表单设定到FormBean的属性上的。

你可能感兴趣的:(Java反射与内省)