標籤:for pre object div length get getc person method
//為了讓程式員更好的操作javabean的屬性,JDK提供了一套API用來訪問某個屬性的setter或getter方法。這就是內省 //內省(Introspector)是java語言對javabean類屬性,方法和事件的一種標準處理方式。 //內省訪問javabean有兩種方法。 //設定javaBean屬性值。 public static void main(String[] args) throws Exception { //1.方式一 /*//執行個體化一個person對象 Person beanObj = new Person(); //通過Introspector對象擷取Person對象的BeanInfo對象 BeanInfo beanInfoObject = Introspector.getBeanInfo(beanObj.getClass(),beanObj.getClass().getSuperclass()); //通過BeanInfoObject的getPropertyDescriptors方法,的到Bean中的所有屬性資訊。 propertyDescriptors = beanInfoObject.getPropertyDescriptors(); //便利屬性資訊,通過getName的到屬性名稱,通過getPropertyType得到屬性類型對象。 for (int i = 0; i <propertyDescriptors.length; i++) { String name = propertyDescriptors[i].getName(); Class<?> propertyType = propertyDescriptors[i].getPropertyType(); System.out.println(name+"("+propertyType.getName()+")"); }*/ //方式二 直接通過PropertyDescriptor對象,擷取屬性資訊。 //建立person類的對象 Person p = new Person(); //通過屬性描述器,獲得那麼屬性描述資訊。 PropertyDescriptor pd = new PropertyDescriptor("name",p.getClass()); //擷取name屬性的setter方法。 Method methodName = pd.getWriteMethod(); //調用setter方法。設定name值 methodName.invoke(p,"小米"); System.out.println(p);
//相應的person類
private String name; private int age; public Person(){} public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String toString(){ return this.name+":"+this.age; }
java內省小記