廖雪峰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 ...
随机推荐
- Linux压缩文件笔记
https://my.oschina.net/dongqianlin/blog/97168http://linux.it.net.cn/CentOS/fast/2017/0628/27029.html ...
- 【HDOJ1069】【动态规划】
http://acm.hdu.edu.cn/showproblem.php?pid=1069 Monkey and Banana Time Limit: 2000/1000 MS (Java/Othe ...
- 【TCP/IP】二、协议的概念
一.概念 1.tcp/ip是通信协议的统称. 2.协议就是计算机与计算机之间通过网络实现通信时,事先达成的一种约定.这种约定,使那些不同厂商的设备,不同的CPU以及不同的操作系统组成的计算机之间,只要 ...
- CH5701 开车旅行
题意 5701 开车旅行 0x50「动态规划」例题 描述 小A和小B决定利用假期外出旅行,他们将想去的城市从1到N编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市 ...
- jsp页面继承
功能类似 django template 中的 extends 功能 使用 1.需要下载rapid-core-4.0.jar 导入到web-inf下lib中 下载地址 http://w ...
- linux前后台任务的切换以及执行暂停
command & 把command命令放到后台执行 ctrl+z 暂停该任务,并且放到后台 jobs 查看任务 bg n 把jobs号码为n的任务放到后台执行 fg n 把jobs号码为n的 ...
- 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 ...
- 一般化数值算法(accumluate,inner_product,partial_sum,adjacent_difference)
accumulate template<class InputIterator, class T> T accumulate( InputIterator _First, InputIte ...
- JavaScript模板引擎Template.js使用详解
这篇文章主要为大家详细介绍了JavaScript模板引擎Template.js使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 template.js 一款 JavaScript 模板引 ...
- ES9新特性
这篇文章主要介绍ES2018(ES9)的新特性, 以及使用方法 JS是一门跨平台的语言, ES6也就是ECMAScript 2015 花费了5年的时间敲定, 是一次非常大的改版, 之后每年都有一个小版 ...