----------------------android培训、java培训、java学习型技术博客、期待与您交流!----------------------
JavaBean是一种特殊的Java类,主要用于传递数据信息,这种java类中的方法主要用于访问私有的字段,且方法名符合某种命名规则。
如果要在两个模块之间传递多个信息,可以将这些信息封装到一个JavaBean中,这种JavaBean的实例对象通常称之为值对象(Value Object,简称VO)。这些信息在类中用私有字段来存储,如果读取或设置这些字段的值,则需要通过一些相应的方法来访问。
JavaBean的属性是根据其中的setter和getter方法来确定的,而不是根据其中的成员变量。如果方法名为setId,中文意思即为设置id,至于把它存到哪个变量上,我们不用关心,如果方法名为getId,中文意思即为获取id,同样我们也不用关系它是从哪个变量上取得的。去掉set前缀,剩余部分就是属性名,如果剩余部分的第二个字母是小写的,则把剩余部分的首字母改成小的。
setId()的属性名àid
isLast()的属性名àlast
setCPU的属性名是什么?àCPU
getUPS的属性名是什么?àUPS
一个类被当作javaBean使用时,JavaBean的属性是根据方法名推断出来的,它根本看不到java类内部的成员变量。
JDK中提供了对JavaBean进行操作的一些API,这套API就称为内省(IntroSpector)。
下面通过一个简单的程序演示如何用内省来操作JavaBean
import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
public class IntroSpectorDemo {
public static void main(String[] args) throws Exception {
Student s = new Student();
PropertyDescriptor pd = new PropertyDescriptor("name", Student.class);
//得到属性的写方法,为属性赋值
Method writeMethod = pd.getWriteMethod();
writeMethod.invoke(s, "zhangsan");
//得到属性的读方法,得到属性值
Method readMethod = pd.getReadMethod();
String name = (String) readMethod.invoke(s);
System.out.println("名字是:" + name);
//获取属性的类型
System.out.println("name属性的类型是:" + pd.getPropertyType().getName());
//获取对象的所有属性名,不包括从父类(这里是指Object)继承来的属性
BeanInfo bi = Introspector.getBeanInfo(Student.class, Object.class);
PropertyDescriptor[] pds = bi.getPropertyDescriptors();
for (PropertyDescriptor p : pds) {
System.out.println(p.getName());
}
}
}
class Student {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
----------------------android培训、java培训、java学习型技术博客、期待与您交流!----------------------
详情请查看:http://edu.csdn.net/heima
分享到:
相关推荐
黑马程序员-java32期培训视频(基础+就业)黑马程序员-java32期培训视频(基础+就业)
day06_线程、同步 day07_等待与唤醒案例、线程池、Lambda表达式 day08_File类、递归 day09_字节流、字符流 day10_缓冲流、转换流、序列化流、Files day11_网络编程 day12_函数式接口 day13_Stream流、方法引用 Java...
黑马程序员 - Java基础教学 - 05 - 面向对象(1).doc
黑马程序员 - Java基础教学 - 04 - 数组、进制转换、二维数组
黑马程序员 - Java基础教学 - 06 - 面向对象(2) - 关于静态static的那些事.doc
黑马程序员 - Java基础教学 - 03 - 变量的作用域、for循环、break、continue、内存结构
黑马程序员 - Java基础教学 - 08 - 面向对象(4)-多态.doc
黑马程序员 - 毕向东 - Java基础教学 - 第02天 个人观看视频总结文档
黑马程序员 - 毕向东 - Java基础教学 - 第01天 个人观看视频总结文档
黑马程序员-SpringCloud-学习笔记-03-Eureka注册中心
NULL 博文链接:https://huangminwen.iteye.com/blog/1157983
黑马程序员-SpringCloud-学习笔记01-认识微服务
黑马QT讲义,适合QT入门,使用,教程很比较基础,新手可以看看,另外视频链接在哔哩哔哩中。
黑马程序员-SpringCloud-学习笔记-02-微服务拆分及远程调用
黑马程序员--毕向东全套Java视屏,讲解的相当全面,各位如果需要,尽快下载哦! 另外如果视频链接存在打不开的问题,请留言,必定及时更新链接。
月薪过万的入门必知知识,黑马程序员入学Java精华总结
黑马程序员-梅兰商城项目实战,包含图片素材和编写源码。
C++黑马程序员-演讲比赛流程管理系统记录
Java 黑马程序员入学Java知识(精华总结)
NULL 博文链接:https://840198532-qq-com.iteye.com/blog/1490901