Java基礎-----JavaBean內省機制

   Java對特殊的類---JavaBean的處理方法---內省機制html

   java.beans  java

一、Introspector    Java提供的內省操做的工具類   

      public static BeanInfo getBeanInfo(Class<?> beanClass)    獲取beanClass的描述信息 緩存

      public static BeanInfo getBeanInfo(Class<?> beanClass, Class<?> stopClass)   獲取beanClass的描述信息,排除父類stopClass的信息工具

      Java內省時會先從緩存總獲取該類的BeanInfo,若是沒有在加載;    this

      public static void flushCaches()   清除全部緩存過的BeanInfo信息spa

      public static void flushFromCaches(Class<?> clz)  清除clz的緩存的BeanInfo信息code

2.   BeanInfo   interface    描述一個JavaBean類的信息  

     public PropertyDescriptor[] getPropertyDescriptors()  獲取全部的屬性描述信息htm

      public MethodDescriptor[] getMethodDescriptors()  獲取全部的方法描述信息ip

package test;

import java.util.Date;

public class Parent {

	private String parentName;
	private int parentAge;
	private Date parentBorn;

	public String getParentName() {
		return parentName;
	}

	public void setParentName(String parentName) {
		this.parentName = parentName;
	}

	public int getParentAge() {
		return parentAge;
	}

	public void setParentAge(int parentAge) {
		this.parentAge = parentAge;
	}

	public Date getParentBorn() {
		return parentBorn;
	}

	public void setParentBorn(Date parentBorn) {
		this.parentBorn = parentBorn;
	}

}

  

package test;

import java.util.Date;

public class Sub extends Parent {
	private String subName;
	private int subAge;
	private Date subBorn;

	public String getSubName() {
		return subName;
	}

	public void setSubName(String subName) {
		this.subName = subName;
	}

	public int getSubAge() {
		return subAge;
	}

	public void setSubAge(int subAge) {
		this.subAge = subAge;
	}

	public Date getSubBorn() {
		return subBorn;
	}

	public void setSubBorn(Date subBorn) {
		this.subBorn = subBorn;
	}

}

   

package test;

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

public class TestIntrospector {
	public static void main(String[] args) throws Exception {
		   //獲取JavaBean的信息,排除父類Object的信息
           BeanInfo beanInfo = Introspector.getBeanInfo(Sub.class,Object.class);
           //JavaBean的屬性信息
           for(PropertyDescriptor pd :beanInfo.getPropertyDescriptors()){
        	System.out.println("屬性名稱 -----"+pd.getName());
        	System.out.println("屬性類型 -----"+pd.getPropertyType().toGenericString());
        	System.out.println("屬性的get方法 -----"+pd.getReadMethod().toGenericString());
        	System.out.println("屬性的set方法 -----"+pd.getWriteMethod().toGenericString());
           }
           //JavaBean的方法信息
           for(MethodDescriptor md:beanInfo.getMethodDescriptors()){
        	   System.out.println(md.getDisplayName());
           }
           for(BeanInfo bi :beanInfo.getAdditionalBeanInfo()){
        	   System.out.println("關聯的類--"+bi.toString());
           }
          
	}
}

  運行結果:get

 

屬性名稱 -----parentAge
屬性類型 -----int
屬性的get方法 -----public int test.Parent.getParentAge()
屬性的set方法 -----public void test.Parent.setParentAge(int)
屬性名稱 -----parentBorn
屬性類型 -----public class java.util.Date
屬性的get方法 -----public java.util.Date test.Parent.getParentBorn()
屬性的set方法 -----public void test.Parent.setParentBorn(java.util.Date)
屬性名稱 -----parentName
屬性類型 -----public final class java.lang.String
屬性的get方法 -----public java.lang.String test.Parent.getParentName()
屬性的set方法 -----public void test.Parent.setParentName(java.lang.String)
屬性名稱 -----subAge
屬性類型 -----int
屬性的get方法 -----public int test.Sub.getSubAge()
屬性的set方法 -----public void test.Sub.setSubAge(int)
屬性名稱 -----subBorn
屬性類型 -----public class java.util.Date
屬性的get方法 -----public java.util.Date test.Sub.getSubBorn()
屬性的set方法 -----public void test.Sub.setSubBorn(java.util.Date)
屬性名稱 -----subName
屬性類型 -----public final class java.lang.String
屬性的get方法 -----public java.lang.String test.Sub.getSubName()
屬性的set方法 -----public void test.Sub.setSubName(java.lang.String)
setSubAge
setParentAge
getSubBorn
setParentName
getParentBorn
setSubBorn
setParentBorn
getSubName
getParentName
getSubAge
getParentAge
setSubName
相關文章
相關標籤/搜索