廖雪峰Java2面向对象编程-6Java核心类-4JavaBean
1.JavaBean定义
符合以下命名规范的class被成为JavaBean
- private 类型的field
- 针对这个field的get和set方法
public class Person {
private String name;
private int age;
private boolean child;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
//isChild方法没有Child字段,而是根据age,实时返回
public boolean isChild() {
return age < 6;
}
}
注意:
* 对于boolean方法,get方法是is
* 属性只需要定义getter/setter方法,不一定需要相应的字段
2.JavaBean属性
通常把一组对应的getter和setter称为属性property
- name属性:
* 对应读方法getName()
* 对应写方法setName() - 对于只有getter的属性成为只读属性,例如age
- 对于只有setter的属性成为只写属性,例如isChild
3.JavaBean的作用:
方便IED工具读写属性
传递数据
枚举属性
public class Main {
public static void main(String[] args) throws Exception{
BeanInfo bi = Introspector.getBeanInfo(Person.class);
for(PropertyDescriptor pd:bi.getPropertyDescriptors()){
printPropertyDescriptor(pd);
}
}
static void printPropertyDescriptor(PropertyDescriptor pd){
String name = pd.getName();
Class<?> clazz = pd.getPropertyType();
if (clazz == null || name.equals("class")){
return;
}
Method read = pd.getReadMethod();
Method write = pd.getWriteMethod();
System.out.println("===== PropertyDescriptor=====");
System.out.println("Name: "+ name);
System.out.println("Type: " + clazz.getName());
System.out.println("Read method: " + (read == null ? "null":read.getName()));
System.out.println("Write menthod: " + (write == null ? "null":write.getName()));
}
}
4.总结:
- JavaBean是一种符合命名规范的class
- JavaBean通过getter/setter来定义属性
- 属性是一种通用的叫法,并非Java语法规定
- 可以利用IDE快速生成getter/setter
- 使用Introspector.getBeanIfo()获取属性列表