JavaBean可视为一种约定俗成的实体类书写规范。目的是使其他的java类可以通过反射机制发现和操作这些JavaBean属性。
Bean是java中可重用软件组件的惯用叫法
严格JavaBean定义
- 属性私有
- 提供get和set方法(public声明,命名符合规范)操作私有属性
- 提供一个无参构造函数
- 实现Serializable接口
这些特点使JavaBean有更好的封装性和可重用性。并且可以被序列化(持久化),保存在硬盘或者网络上传输
对于不需要持久化的实体,不实现第四条也是可以的。开发中常见的实体类,可能没有严格遵守JavaBean书写规范
public class User implements Serializable {
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public User(String username, String password) {
this.username = username;
this.password = password;
}
public User() {
}
// 一般会重写toString方法,输出对象属性
@Override
public String toString() {
return "User[username=" + username + ",password=" + password + "]";
}
}
java提供的Serializable接口只是一个空接口(里面不包含方法,因此不需要实现,只做为标记用)
在java中,如果一个类实现了Serializable接口,这个类和子类是自动支持序列化和反序列化的,其实是在告诉JVM此类可以被序列化,是为了方便以后实现序列化和反序列化的功能。但是还是要自己来实现具体如何序列化。
例如:将对象写入文件(序列化)或者从文件中读取对象信息(反序列化)