JavaSE学习笔记--内省
来源:互联网 发布:纸模型高达 知乎 编辑:程序博客网 时间:2024/05/17 01:56
内省
内省是Java语言对Bean类属性、事件的一种缺省处理方法。例如类A中有属性name, 那我们可以通过getName,setName来得到其值或者设置新的值。通过getName/setName来访问name属性,这就是默认的规则
class Person{
private int age;
public int getAge(){
return age;
}
public void setAge(int age){
this.age = age;
}
}
JavaBean是一种特殊的Java类,主要用于传递数据信息,这种java类中的方法主要用于访问私有的字段,且方法名符合某些命名规范。
java的属性名是根据方法名而来的:去掉get或set的方法名前缀之后,剩下的名称就是javaBean的属性名。但是主要大小写的改写情况。
如:
getTime-->time
getCPU-->CPU
内省的操作:
使用内省来操作javaBean
获取java中字段的值,通常的方法:
1,使用反射的方法
"x"-->"X"-->"getX"-->MethodGetx-->
2,使用反射的方法
String propertyName = "x";
PropertyDescriptor pd = new PropertyDescriptor(propertyName,beanclass);
Method methodGetX = pd.getReadMethod();
Object retVal = methodGetX.invoke(Object obj,Object...args);
/*
pd.getWriteMethod();
methodSetX.invoke(Object obj,Object...args);
*/
使用Beanutils工具包来设置java类的属性:
使用前需要导入Beanutils工具包 和 Logging包。
ReflectPoint pt1 =new ReflectPoint(3,5);
BeanUtils.setProperty(pt1,"x","9"); //注意使用时x当作String类型的,而不是int
System.out.println(pt1.getX());
又如:(支持属性的"级延操作")
BeanUtils.setProperty(pt1,"birthday.time","111");birthday是一个复合属性,他下边还有一个time,因为birthday有一个setTime()方法。
System.out.println(BeanUtils.getProperty(pt1,"birthday.time"));birthday是一个复合属性,他下边还有一个time,因为birthday有一个setTime()方法。
使用PropertyUtils.setProperty(pt1,"x",9);
System.out.println(PropertyUtils.getProperty(pt1,"x").getClass()); //注意使用时x当作Int类型的,String.(与BeanUtils类不同)
- JavaSE学习笔记--内省
- 学习笔记 --内省
- 黑马程序员-内省学习笔记
- {学习笔记}[内省]
- Java-内省(学习笔记)
- JavaSE学习笔记--反射
- JavaSE学习笔记--泛型
- javaSE学习笔记
- JAVASE学习笔记一
- JAVASE学习笔记二
- javaSE学习笔记3
- JavaSE学习笔记
- JavaSE学习笔记--Annotation
- JavaSE学习笔记
- javase学习笔记-----函数
- javase学习笔记------------数组
- JavaSE学习笔记三
- javaSE 学习笔记
- vi的使用
- c#中实现接口与显式实现接口的区别
- 用java调用oracle存储过程总结
- IE6-7子级浮动元素撑开父级元素【BUG】
- T-SQL语句显示级联依赖关系 .
- JavaSE学习笔记--内省
- 黑马程序员--交通灯管理系统
- 深入理解互斥锁的实现
- TableLayoutPanel控件的使用
- 窗口子类化和超类化
- 从设计意图看OUT参数和REF参数的区别与联系
- 告诉大家,我回来了。
- 借助大顶堆实现筛选前N个最小值
- AT91Bootstrap1.16第二阶段C程序详解之二