- JavaBean是一种特殊的Java类,主要用于传递数据信息,访问私有字段,且方法符合某种命名规则。
- 如果要在两个模块之间传递信息,这些信息可以被封装在JavaBean中,这种JavaBean的实例对象通常称之为值对象(Value Object)。这些信息通过私有字段存储,通过getter与setter来存取。
- 内省(IntroSpector):JDK提供了对JavaBean进行操作的一些API,这些API就称为内省。
- 简单内省操作示例:
import java.lang.reflect.*; import java.beans.*; public class IntroSpectorDemo { public static void main(String[] args) throws IntrospectionException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { // TODO Auto-generated method stub ReflectPoint rp = new ReflectPoint(3,5); String propName = "x"; Object retVal = getProperty(rp, propName); System.out.println(retVal); int value = 7; setProperty(rp, propName, value); System.out.println(rp.getX()); } private static void setProperty(Object rp, String propName, int value) throws IntrospectionException, IllegalAccessException, InvocationTargetException { PropertyDescriptor pd = new PropertyDescriptor(propName, rp.getClass()); Method setX = pd.getWriteMethod(); setX.invoke(rp, value); } private static Object getProperty(Object rp, String propName) throws IntrospectionException, IllegalAccessException, InvocationTargetException { PropertyDescriptor pd = new PropertyDescriptor(propName, rp.getClass()); Method getX = pd.getReadMethod(); Object retVal = getX.invoke(rp); return retVal; } }
- 复杂内省操作:(修改以上的getProperty方法为示例)
- BeanUtils工具包
- 如何把外部jar包加到eclipse工程中:1 工程下建一个文件夹 2 复制黏贴jar包 3 右键jar包,加入到buildpath里
- BeanUtils功能强大,都是静态方法,比如getProperty等
- 例:假如对象op1中有个Date类型的birthday属性且不为null,则可以:【支持属性链
- JavaBean可以和Map互相转换
黑马程序员_Java基础加强第二天——内省/JavaBean
最新推荐文章于 2015-02-04 20:08:32 发布