黑马程序员--java基础加强之内省(IntroSpector)
------- 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培训、期待与您交流! ----------
转载于:https://www.cnblogs.com/guoyanjun2013/archive/2013/04/08/3011516.html
黑马程序员--java基础加强之内省(IntroSpector)相关推荐
- 黑马 程序员——Java基础---流程控制
黑马程序员--Java基础---流程控制 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------ 一.概述 Java提供了两种基本的流程控制结构:分支结构 ...
- 黑马 程序员——Java基础---IO(下)
黑马程序员--Java基础---IO(下) ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------ 一.概述 Java除了基本的字节流.字符流之外,还提供 ...
- 黑马程序员--Java基础加强篇
开发工具使用 --------------------------------------------------------------------------------------------- ...
- 黑马程序员-Java基础:面向对象(上)
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.面向对象概述 当需求单一,或者简单时,我们一步一步去操作没问题,并且效率也挺高.可随着需求的 ...
- 黑马程序员-Java基础知识预备之Java流程控制与数组
-------- android培训.java培训.期待与您交流!---------- 本博文涉及的主要内容如下: if语句 switch语句 循环结构 循环结构的控制 数组类型 数组在内存中的运行机 ...
- 黑马程序员—java基础总结1
------- android培训.java培训.期待与您交流! ---------- 一:java概述: 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用 ...
- 黑马程序员 — JAVA基础 — 内部类、异常
-----------android培训.java培训.java学习型技术博客.期待与您交流!------------ 一.内部类 1.概念: 把类定义在另一个类的内部,该类就被称为内部类. Eg:把 ...
- 黑马程序员-Java基础加强之枚举
--------- android培训.java培训.期待与您交流!---------- 一.为什么要有枚举? 问题:要定义季节.星期向或性别的变量,该怎么定义?假设用1-4分别表示春.夏.秋.冬,但 ...
- 黑马程序员-Java基础:设计模式总结
--Java培训.Android培训.iOS培训..Net培训.期待与您交流! -- Java基础部分设计模式 一.设计模式概述 设计模式(Design pattern)是一套被反复使用.多数人知晓的 ...
最新文章
- context:annotation-config / 和context:component-
- Toast的功能和用法
- poj 2415(BFS)
- 去掉button按钮左右两边的留白
- Android笔记之平移View
- img = img1*mask + img2*(1-mask) How do that ?
- Elasticsearch 支持哪些类型的查询?
- 2015年辽宁省赛Interesting Tree
- reinterpret_cast 最小demo
- awk(三)If语句
- 工业级嵌入式串口转wifi模块
- idea中使用eclipse快捷键的常用快捷键
- videojs播放rtmp视频流,解决TypeError: this.el_.vjs_getProperty is not a function错误
- 7z解压crc错误_rar文件解压缩失败解压末端出现错误的解决方法
- Steam 最新VR 游戏畅销榜——这几款游戏绝对值得一玩~不来看看你可就错过啦!
- Milvus 揭秘| 向量索引算法HNSW和NSG的比较
- Python函数和面向对象,小白看了都说好
- 字母重排(算法竞赛入门经典)
- 雷军:企业如何渡过寒冬?你需要学会这5招
- FPGA设计编程(二) 8-3线优先编码器与3-8线译码器
热门文章
- 使用Julia进行图像处理--使用形态学运算进行图像调整
- 阵列函数 java_Java复制阵列– Java中的阵列复制
- 狗熊冬眠_4本最佳的冬眠书–Spring冬眠书
- [msi]Cannot open database file. System error -2147287035
- eclipse 构建 jpa project 所需的用户库(vendor: EclipseLink)
- 敬业签电脑手机云同步便签及安卓手机和苹果手机云同步桌面便签
- You (root) are not allowed to access to (crontab) because of pam configuration
- 《深入解析IPv6(第3版)》——10.5 失效网关检测
- [转]php返回json数据中文显示的问题
- 关于SVN提交注释的问题