廖雪峰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()获取属性列表
廖雪峰Java2面向对象编程-6Java核心类-4JavaBean的更多相关文章
- 廖雪峰Java2面向对象编程-6Java核心类-3包装类型
		Java的数据类型: 基本类型:int boolean float 引用类型:所有class类型 为一个基本类型int赋值为null,会提示"incompatible types" ... 
- 廖雪峰Java2面向对象编程-6Java核心类-2StringBuilder
		字符串操作过程中,每次用 + 拼接字符串,有以下问题: 每次循环都会创建新的对象 绝大部分都是临时对象.浪费内存 影响GC效率 String s = ""; for(int i=0 ... 
- 廖雪峰Java2面向对象编程-6Java核心类-1字符串和编码
		Java的字符串用String表示 1.String特点: 可以直接使用"..."表示一个字符串,不强制使用new String 内容不可变 String s1 = "h ... 
- 廖雪峰Java2面向对象编程-6Java核心类-6常用工具类
		1.Math Math提供了数学计算的静态方法 序号 方法 描述 1 abs() 返回参数的绝对值.Math.abs(-9)//9 2 ceil() 返回大于等于( >= )给定参数的的最小整数 ... 
- 廖雪峰Java2面向对象编程-6Java核心类-5枚举类
		直接定义常量 public class Weekday { //定义int常量 public static final int SUN = 0; public static final int MON ... 
- 廖雪峰Java2面向对象编程-3继承和多态-1继承
		1.继承 继承是一种代码复用的方式. Student与Person有相同部分的代码. Student可以从Person继承,这样Student获得了Person的所有功能,只需要编写新增的功能即可.通 ... 
- 廖雪峰Java2面向对象编程-1面向对象-1面向对象基础
		1.对象的概念 面向对象编程:Object-Oriented Programming 对现实世界建立计算机模型的一种编程方法. 现实世界 计算机模型 Java代码 人 类/class class Pe ... 
- 廖雪峰Java2面向对象编程-5包和classpath-4classpath和jar
		1.classpath 1.1classpath定义 classpath是一个环境变量 classpath指示JVM如何搜索class classpath设置的搜索路径与操作系统相关 * window ... 
- 廖雪峰Java2面向对象编程-4抽象类和接口-2接口
		1.接口的定义 抽象方法本质上是定义接口规范. 在抽象类中定义了一个抽象方法,子类中必须实现这个抽象方法. public abstract class Person{ public abstract ... 
随机推荐
- 实验吧—Web——WP之 简单的sql注入之2
			直接打开解题连接: 既然是SQL注入,那么我们就要构造注入语句了,这个就要有耐心一个一个去尝试了 输入语句 1'and 1=1 # 和 1'and/**/1=1/**/#后 对比一下,发现是过滤掉了空 ... 
- GinKgoCTF-Misc
			一:谁动了我的校徽? Jpg改txt——>寻找——>GKCTF{This_is_a_huaji} 二:奇怪的压缩包1 六位数字的密码一点也不安全!!!!!! 下载压缩包——>有密码( ... 
- 浅谈log4j-3-不同输出样式
			public static void main(String[] args) { Logger logger=Logger.getLogger(Appendable.class); //设置输出等级 ... 
- SQL将时间格式化为year-month-day
			SQL将输出年月日格式化为:2017-12-3-28 CONVERT(varchar(100),RunDate, 23) AS RunDate, 
- LG3187 [HNOI2007]最小矩形覆盖
			题意 题目描述 给定一些点的坐标,要求求能够覆盖所有点的最小面积的矩形,输出所求矩形的面积和四个顶点坐标 输入输出格式 输入格式: 第一行为一个整数n(3<=n<=50000),从第2至第 ... 
- hive 分隔符替换
			Hive建表的时候虽然可以指定字段分隔符,不过用insert overwrite local directory这种方式导出文件时,字段的分割符会被默认置为\001,一般都需要将字段分隔符转换为其它字 ... 
- 使用OpenCV进行人脸识别
			不断维护的地址:http://plzcoding.com/face-recognition-with-opencv/ 怎样使用OpenCV进行人脸识别 本文大部分来自OpenCV官网上的Face Re ... 
- BinaryReader 自己写序列化
			听说过BinaryReader和BinaryWriter吗? 序列化无非就是网络通信时所使用的传输数据的方式,而BinaryWriter可以将数据以二进制的方式写入到流当中.比如Int32型的1用Bi ... 
- python-廖雪峰,map/reduce学习笔记
			# _*_ coding:utf-8 _*_from functools import reduce def str2int(s): digits = {'0': 0, '1': 1, '2': 2, ... 
- 一个类似 Twitter 雪花算法 的 连续序号 ID 产生器  SeqIDGenerator
			项目地址 : https://github.com/kelin-xycs/SeqIDGenerator 今天 QQ 群 里有网友问起产生唯一 ID 的方法 有哪些, 讨论了各种方法 . 有网 ... 
