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的更多相关文章

  1. 廖雪峰Java2面向对象编程-6Java核心类-3包装类型

    Java的数据类型: 基本类型:int boolean float 引用类型:所有class类型 为一个基本类型int赋值为null,会提示"incompatible types" ...

  2. 廖雪峰Java2面向对象编程-6Java核心类-2StringBuilder

    字符串操作过程中,每次用 + 拼接字符串,有以下问题: 每次循环都会创建新的对象 绝大部分都是临时对象.浪费内存 影响GC效率 String s = ""; for(int i=0 ...

  3. 廖雪峰Java2面向对象编程-6Java核心类-1字符串和编码

    Java的字符串用String表示 1.String特点: 可以直接使用"..."表示一个字符串,不强制使用new String 内容不可变 String s1 = "h ...

  4. 廖雪峰Java2面向对象编程-6Java核心类-6常用工具类

    1.Math Math提供了数学计算的静态方法 序号 方法 描述 1 abs() 返回参数的绝对值.Math.abs(-9)//9 2 ceil() 返回大于等于( >= )给定参数的的最小整数 ...

  5. 廖雪峰Java2面向对象编程-6Java核心类-5枚举类

    直接定义常量 public class Weekday { //定义int常量 public static final int SUN = 0; public static final int MON ...

  6. 廖雪峰Java2面向对象编程-3继承和多态-1继承

    1.继承 继承是一种代码复用的方式. Student与Person有相同部分的代码. Student可以从Person继承,这样Student获得了Person的所有功能,只需要编写新增的功能即可.通 ...

  7. 廖雪峰Java2面向对象编程-1面向对象-1面向对象基础

    1.对象的概念 面向对象编程:Object-Oriented Programming 对现实世界建立计算机模型的一种编程方法. 现实世界 计算机模型 Java代码 人 类/class class Pe ...

  8. 廖雪峰Java2面向对象编程-5包和classpath-4classpath和jar

    1.classpath 1.1classpath定义 classpath是一个环境变量 classpath指示JVM如何搜索class classpath设置的搜索路径与操作系统相关 * window ...

  9. 廖雪峰Java2面向对象编程-4抽象类和接口-2接口

    1.接口的定义 抽象方法本质上是定义接口规范. 在抽象类中定义了一个抽象方法,子类中必须实现这个抽象方法. public abstract class Person{ public abstract ...

随机推荐

  1. Linux压缩文件笔记

    https://my.oschina.net/dongqianlin/blog/97168http://linux.it.net.cn/CentOS/fast/2017/0628/27029.html ...

  2. 【HDOJ1069】【动态规划】

    http://acm.hdu.edu.cn/showproblem.php?pid=1069 Monkey and Banana Time Limit: 2000/1000 MS (Java/Othe ...

  3. 【TCP/IP】二、协议的概念

    一.概念 1.tcp/ip是通信协议的统称. 2.协议就是计算机与计算机之间通过网络实现通信时,事先达成的一种约定.这种约定,使那些不同厂商的设备,不同的CPU以及不同的操作系统组成的计算机之间,只要 ...

  4. CH5701 开车旅行

    题意 5701 开车旅行 0x50「动态规划」例题 描述 小A和小B决定利用假期外出旅行,他们将想去的城市从1到N编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市 ...

  5. jsp页面继承

    功能类似 django template 中的  extends 功能 使用 1.需要下载rapid-core-4.0.jar    导入到web-inf下lib中   下载地址   http://w ...

  6. linux前后台任务的切换以及执行暂停

    command & 把command命令放到后台执行 ctrl+z 暂停该任务,并且放到后台 jobs 查看任务 bg n 把jobs号码为n的任务放到后台执行 fg n 把jobs号码为n的 ...

  7. Unity 代码 学习

    A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A: B: using System; using System.Runtime.Compile ...

  8. 一般化数值算法(accumluate,inner_product,partial_sum,adjacent_difference)

    accumulate template<class InputIterator, class T> T accumulate( InputIterator _First, InputIte ...

  9. JavaScript模板引擎Template.js使用详解

    这篇文章主要为大家详细介绍了JavaScript模板引擎Template.js使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下   template.js 一款 JavaScript 模板引 ...

  10. ES9新特性

    这篇文章主要介绍ES2018(ES9)的新特性, 以及使用方法 JS是一门跨平台的语言, ES6也就是ECMAScript 2015 花费了5年的时间敲定, 是一次非常大的改版, 之后每年都有一个小版 ...