------- android培训、java培训、期待与您交流! ----------
一、JavaBean
1、JavaBean是一种特殊的java类,主要用来传递数据信息,这种java类中的方法主要用来访问私有的字段,且方法名符合某种命名规则。
2、如果要在两个模块儿中传递多个信息,可以将这些信息封装到JavaBean中,这种JavaBean的实例对象通常称之为值对象(Value Object,简称VO)
这些信息在类中用私有字段来存储,如果读取或设置这些信息,需要通过相应的方法来访问。这些方法通常是get和set。
所以JavaBean的属性是根据getter和setter方法来确定的,而不是根据其中的成员变量。它将get或set方法的前缀去掉,保留后面的字段作为自己的属性名。
比如:getId>属性名就是CPU。
3、JDk中对JavaBean的操作提供了一些API,这套API就叫做内省。
需求:用JavaBean的内省获取Test类中的私有成员变量x,y
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | //定义一个测试类 class Test{ private int x; private int y; public int getX() { return x; } public void setX( int x) { this .x = x; } public int getY() { return y; } public void setY( int y) { this .y = y; } public Test( int x, int y) { super (); this .x = x; this .y = y; } } public class Introspector { private static String x; public static void main( String [] args) throws Exception { //创建Test对象 Test test = new Test( 3 , 5 ); //将要获取的变量封装成对象 String propertyName = "x" ; //调用获取方法 getProperty(test, propertyName); //定义需要设置后的变量 Object value = 7 ; setProperty(test, propertyName, value); System.out.println(test.getX()); } //自定义设置变量的方法,需要传入对象名,变量名,设置后的值 private static void setProperty( Object obj, String propertyName, Object value) throws IntrospectionException, IllegalAccessException, InvocationTargetException { //创建属性描述对象,传入变量名,变量名所在的类 PropertyDescriptor pd1 = new PropertyDescriptor(propertyName, obj.getClass()); //获取方法 Method methodSetX = pd1.getWriteMethod(); //操作方法 methodSetX.invoke(obj, value); } private static void getProperty( Object obj, String propertyName) throws IntrospectionException, IllegalAccessException, InvocationTargetException { PropertyDescriptor pd = new PropertyDescriptor(propertyName, obj.getClass()); Method methodGetX = pd.getReadMethod(); //操作方法,得到返回的值。因为get方法不需要参数,所以该处只需要传入对象名即可 Object retVal = methodGetX.invoke(obj); System.out.println(retVal); } } |
二、Beanutils工具包
1、因为JavaBean的使用频率很高,所以Apache就提供了beanutils工具包来对JavaBean进行操作。
2、需要从Apache官网下载工具包和日志包logging.jar。
3、利用工具包提供的方法来获取上个事例的变量就会很方便,只需要一部。
BeanUtils.getProperty(对象,"变量名");
BeanUtils.setProperty(对象,"变量名","值(这里是字符串)");
也可以PropertyUtils.setProperty(对象,"变量名",实际类型);
这两者区别就是最后面的参数不同。
------- android培训、java培训、期待与您交流! ----------