黑马程序员__内省和JavaBean

来源:互联网 发布:nodejs npm安装linux 编辑:程序博客网 时间:2024/04/29 00:15

内省Introspector
Java提供用于对JavaBean进行操作的类。

JavaBean
JavaBean是一种特殊的Java类,主要用于传输数据信息,这种java类中的方法主要用于访问私有的字段,且方法符合某种命名规则。
如果要在两个模块之间传递多个信息,可以将这些信息封装到一个JavaBean中,这种JavaBean的实例对象通常称之为值对象(Value Object,简称VO)。这些信息在类中用私有字段来存储,如果读取或设置这些字段值,则需要通过一些相应的方法来访问,大家觉得这些方法名叫什么好呢?JavaBean属性是跟据其中的setter和getter方法来确定的,而不是根据其中的成员变量。如果方法名为SetId,中文意思即为设置Id,至于你把它放到哪个变量上,用管吗?如果方法名为getId,中文意思为获取Id,至于你从哪个变量上取,用管吗、?去掉set前缀就是属性名,如果剩余部分的第二个字母是小写,则把剩余部分首字母改为小写的。
setId()属性名--->id
isLast()属性名-last
例如
Java代码 复制代码 收藏代码
  1. class Person
  2. {
  3. private int age;
  4. public int getAge()
  5. {
  6. return age;
  7. }
  8. public void setAge(int age)
  9. {
  10. this.age = age;
  11. }
  12. //Age如果第二个字母是小写的,则把第一个字母变成小写的—>age就是属性名
  13. }


对JavaBean的简单内省操作
Java代码 复制代码 收藏代码
  1. /**
  2. JavaBean测试类
  3. */
  4. public class ReflectPoint
  5. {
  6. //成员变量定义
  7. private int x;
  8. public int y;
  9. //构造函数初始化x,y
  10. ReflectPoint(int x,int y)
  11. {
  12. this.x = x;
  13. this.y = y;
  14. }
  15. /**
  16. x,y的setter和getter方法
  17. */
  18. public int getX()
  19. {
  20. return x;
  21. }
  22. public int getY()
  23. {
  24. return y;
  25. }
  26. public void setX(int x)
  27. {
  28. this.x = x;
  29. }
  30. public void setY(int y)
  31. {
  32. this.y = y;
  33. }
  34. }

Java代码 复制代码 收藏代码
  1. import java.lang.reflect.*;
  2. import java.beans.*;
  3. /**
  4. 对JavaBean的简单内省操作
  5. */
  6. public class IntrospectorTest
  7. {
  8. public static void main(String[] args) throws Exception
  9. {
  10. //创建JavaBean类ReflectPoint的对象
  11. ReflectPoint pt1 = new ReflectPoint(3,5);
  12. /*通过JavaBean类实例对象成员x的属性值*/
  13. String propertyName = "x";
  14. Object reVal = getProperty(pt1,propertyName);
  15. System.out.println(reVal);
  16. /*修改JavaBean类的实例对象pt1的x变量的属性值*/
  17. int value = 7;
  18. setProperty(pt1,propertyName,value);
  19. System.out.println(pt1.getX());
  20. }
  21. /*
  22. 获取指定对象的属性值
  23. */
  24. private static Object getProperty(Object pt1,String propertyName)throws Exception
  25. {
  26. PropertyDescriptor pd = new PropertyDescriptor(propertyName,pt1.getClass());
  27. Method methodGetX =pd.getReadMethod();
  28. Object reVal = methodGetX.invoke(pt1);
  29. return reVal;
  30. }
  31. /*
  32. 设置指定对象的属性值
  33. */
  34. private static void setProperty(Object pt1,String propertyName,Object Value)throws Exception
  35. {
  36. PropertyDescriptor pd = new PropertyDescriptor(propertyName,pt1.getClass());
  37. Method methodSetX = pd.getWriteMethod();
  38. methodSetX.invoke(pt1,7);
  39. }
  40. }  
原创粉丝点击