我认为,我理解“Bean”是一个具有财产和getters/setter的Java-class。据我所知,它相当于C结构。这是真的吗?
此外,JavaBean和常规类之间是否存在真正的语法差异?是否有特殊定义或接口?
基本上,为什么有一个术语?
Serializable接口是什么意思?
我认为,我理解“Bean”是一个具有财产和getters/setter的Java-class。据我所知,它相当于C结构。这是真的吗?
此外,JavaBean和常规类之间是否存在真正的语法差异?是否有特殊定义或接口?
基本上,为什么有一个术语?
Serializable接口是什么意思?
当前回答
POJO(普通的旧Java对象):POJO是普通的Java对象,除了Java语言强制的限制外,没有其他限制。
序列化:用于保存对象的状态并通过网络发送。它将对象的状态转换为字节流。我们可以通过称为反序列化的过程从字节流中重新创建Java对象。
使类实现java.io.Serializable接口。并使用ObjectOutputStream类的writeObject()方法实现序列化。
JavaBean类:它是一个特殊的POJO,有一些限制(或约定)。
实现序列化具有公共无参数构造函数所有财产都是私有的,使用公共getters和setter方法。
许多框架(如Spring)使用JavaBean对象。
其他回答
JavaBean是一个Java类(概念性),应该遵循以下约定:
它应该有一个无参数构造函数。它应该是可序列化的。它应该提供设置和获取财产值的方法,称为getter和setter方法。
它是一个可重用的软件组件。它可以将多个对象封装到一个对象中,以便可以从多个位置访问同一个对象,这是代码易于维护的一步。
JavaBeans是遵循极其简单的编码约定的Java类。你所要做的就是
实现java.io.Serializable接口-保存对象使用公共空参数构造函数-实例化对象提供公共getter/setter方法,以获取和设置私有变量(财产)的值。
关于问题的第二部分,序列化是一种持久性机制,用于将对象存储为一系列带符号的字节。不太正式地说,它存储对象的状态,以便以后可以通过反序列化来检索它。
JavaBean的财产
JavaBean是满足某些编程约定的Java对象:
JavaBean类必须实现Serializable或可外部化JavaBean类必须具有无参数构造函数所有JavaBean财产都必须具有公共setter和getter方法所有JavaBean实例变量都应该是私有的
JavaBeans示例
@Entity
public class Employee implements Serializable{
@Id
private int id;
private String name;
private int salary;
public Employee() {}
public Employee(String name, int salary) {
this.name = name;
this.salary = salary;
}
public int getId() {
return id;
}
public void setId( int id ) {
this.id = id;
}
public String getName() {
return name;
}
public void setName( String name ) {
this.name = name;
}
public int getSalary() {
return salary;
}
public void setSalary( int salary ) {
this.salary = salary;
}
}
JavaBeans是一种标准,其基本语法要求已由其他答案明确解释。
然而,IMO,它不仅仅是一个简单的语法标准。JavaBeans的真正含义或预期用途是,与围绕标准的各种工具支持一起,促进代码重用和基于组件的软件工程,即使开发人员能够通过组装现有组件(类)来构建应用程序,而无需编写任何代码(或只需编写少量粘合代码)。不幸的是,这项技术被业界低估和利用不足,从本主题的答案中可以看出这一点。
如果您阅读Oracle的JavaBeans教程,您可以更好地理解这一点。