java 中的内省 introspector
概述
經常需要使用java對象的屬性來封裝程序的數據,每次都使用反射技術完成此類操作過于麻煩,所以sun公司開發了一套API,專門用于操作java對象的屬性。
內省(IntroSpector)是Java語言對JavaBean 類屬性、事件的一種處理方法。 例如類A中有屬性name,那我們可以通過getName,setName 來得到其值或者設置新的值。 通過getName/setName 來訪問name屬性,這就是默認的規則。
Java中提供了一套API 用來訪問某個屬性的getter/setter方法,通過這些API可以使你不需要了解這個規則,這些API存放于包java.beans 中。
一般的做法是通過類Introspector的getBeanInfo方法獲取某個對象的BeanInfo信息,然后通過BeanInfo來獲取屬性的描述器(PropertyDescriptor),通過這個屬性描述器就可以獲取某個屬性對應的getter/setter方法,然后我們就可以通過反射機制來調用這些方法。
我們又通常把javabean的實例對象稱之為值對象,因為這些bean中通常只有一些信息字段和存儲方法,沒有功能性方法。
一個JavaBean類可以不當JavaBean用,而當成普通類用。JavaBean實際就是一種規范,當一個類滿足這個規范,這個類就能被其它特定的類調用。一個類被當作javaBean使用時,JavaBean的屬性是根據方法名推斷出來的,它根本看不到java類內部的成員變量。去掉set前綴,然后取剩余部分,如果剩余部分的第二個字母是小寫的,則把剩余部分的首字母改成小的。
內省訪問JavaBean有兩種方法:
User.java
public class User {private String name;private int age;public User(String name, int age) {this.name = name;this.age = age;}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;} }想了解更多精彩內容請關注我的公眾號
本人簡書blog地址:http://www.jianshu.com/u/1f0067e24ff8????
點擊這里快速進入簡書
GIT地址:http://git.oschina.net/brucekankan/
點擊這里快速進入GIT
總結
以上是生活随笔為你收集整理的java 中的内省 introspector的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Junit 多线测试 问题
- 下一篇: Junit 测试之 Spring Te