POJO vs Java Beans

家电修理 2023-07-16 19:16www.caominkang.com电器维修

POJO vs Java Beans
  • 1.POJO
  • 2.Java Bean
  • 2.对比
1.POJO

POJO 是Plain Old Java Object的缩写。POJO是一个不依赖任何其他类没有限制的普通Java对象。POJO最大的作用是增强可读性和复用性,POJO的概念在Sun公司的EJB3.0中提出。

如果一个类有以下情况那它一定不是一个POJO类

  1. 继承了某个类。
  2. 实现了某个接口。
  3. 包含注解。
    所以POJO用于定义一个基础实体类。

下面是一个普通POJO

// Employee POJO class to represent entity Employee
public class Employee
{
	// default field
	String name;

	// public field
	public String id;

	// private salary
	private double salary;

	//arg-constructor to initialize fields
	public Employee(String name, String id,
							double salary)
	{
		this.name = name;
		this.id = id;
		this.salary = salary;
	}

	// getter method for name
	public String getName()
	{
		return name;
	}

	// getter method for id
	public String getId()
	{
		return id;
	}

	// getter method for salary
	public Double getSalary()
	{
		return salary;
	}
}

POJO对于成员变量的访问权限没有限制,可以是私有,共有,保护或者默认类型。

2.Java Bean

Java Bean是一种特殊类型的POJO。一个POJO往往需要满足以下条件才能称之为一个Java Bean

  1. 所有的JavaBean都是POJO,不是所有JavaBean都是POJO
  2. 应该实现Serializable接口
  3. 成员变量的应该用private修饰
  4. 使用getter方法和setter方法访问成员变量
  5. 有一个无参构造方法
  6. 成员变量只被构造方法和getter,setter访问

JavaBean的getter,setter方法名应该是成员变量名前面加上get,set,而且方法一般使用public修饰。例如有个成员变量叫someProperty,那么它的getter,setter方法应该是

public "returnType" getSomeProperty()
{
   return someProperty;
} 

public void setSomePRoperty(someProperty)
{
   this.someProperty=someProperty;
}

getter,setter方法的好处是可以对访问变量和设置变量时进行控制,例如设置age时,例如

// Java program to illustrate JavaBeans
class Bean
{
	// private field property
	private Integer property;
	Bean()
	{
		// No-arg constructor
	}
	
	// setter method for property
	public void setProperty(Integer property)
	{
		if (property == 0)
		{
			// if property is 0 return
			return;
		}
		this.property=property;
	}
	
	// getter method for property
	public Integer getProperty()
	{
		if (property == 0)
		{
			// if property is 0 return null
			return null;
		}
		return property;
	}
}
2.对比 POJOJava Bean限制较少限制较多对成员变量控制少队成员变量控制多可以不实现序列化接口应该实现序列化接口成员变量可以使用权限修饰符修饰成员应该私有对无参构造无要求必须有无参构造让使用者完全访问只暴露部分细节给使用者

Copyright © 2016-2025 www.caominkang.com 曹敏电脑维修网 版权所有 Power by