一文搞懂 java 中 POJO 和 bean 区别

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益:

  1. 了解大厂经验
  2. 拥有和大厂相匹配的技术等

希望看什么,评论或者私信告诉我!

在Java中,POJO(Plain Old Java Object)和JavaBean都是普通的Java对象,但它们在定义规范和使用场景上存在一些区别:

1. 定义与规范

  • POJO(简单老式Java对象)

    • 没有严格的规范约束,本质上就是一个普通的Java类
    • 可以包含字段、构造方法、getter/setter方法
    • 不需要实现特定接口或继承特定类
    • 可以有任意的方法,不限制访问修饰符
    • 示例:
    java 复制代码
    public class User {
        private String name;
        private int age;
        
        // 可以只有字段,甚至没有getter/setter
        // 可以有任意构造方法
    }
  • JavaBean

    • 是一种遵循特定规范的POJO
    • 必须有无参构造方法
    • 字段必须私有(private)
    • 必须通过公共(public)的getter/setter方法访问字段
    • 可以实现Serializable接口(通常建议实现,用于序列化)
    • 示例:
    java 复制代码
    import java.io.Serializable;
    
    public class UserBean implements Serializable {
        private String name;
        private int age;
        
        // 必须有无参构造
        public UserBean() {}
        
        // 必须有getter/setter
        public String getName() { return name; }
        public void setName(String name) { this.name = name; }
        
        public int getAge() { return age; }
        public void setAge(int age) { this.age = age; }
    }

2. 关系

  • 所有JavaBean都是POJO,但并非所有POJO都是JavaBean
  • JavaBean是POJO的一个子集,是满足特定规范的POJO

3. 使用场景

  • POJO:更通用,适用于各种场景,尤其是简单的数据载体,如DTO(数据传输对象)、VO(值对象)等
  • JavaBean :主要用于需要符合特定规范的场景,如:
    • 早期的JSP标签库
    • 序列化/反序列化(如JSON转换)
    • 各种框架的反射操作(如Spring、Hibernate等)

4. 总结

简单来说,POJO更自由灵活,而JavaBean则是"规矩更多"的POJO,这些规矩主要是为了让框架能更方便地处理对象。

相关推荐
wefly201714 分钟前
m3u8live.cn 在线M3U8播放器,免安装高效验流排错
前端·后端·python·音视频·前端开发工具
zhanggongzichu1 小时前
小白怎么理解后端分层概念
后端·全栈
stark张宇2 小时前
Golang后端面试复盘:从Swoole到IM架构,如何支撑360w用户的实时消息推送?
后端
小码哥_常2 小时前
从0到1:搭建Spring Boot 3企业级认证授权平台
后端
小码哥_常2 小时前
告别扫库噩梦!Spring Boot+Redis让订单超时管理飞起来
后端
大傻^3 小时前
Spring AI Alibaba 快速入门:基于通义千问的AI应用开发环境搭建
java·人工智能·后端·spring·springai·springaialibaba
IT_陈寒4 小时前
SpringBoot实战:3个隐藏技巧让你的应用性能飙升50%
前端·人工智能·后端
彭于晏Yan4 小时前
MQTT消息服务
spring boot·后端·中间件
程序员Sunday4 小时前
Claude Code 生态爆发:5个必知的新工具
前端·人工智能·后端
weixin_387534224 小时前
Ownership - Rust Hardcore Head to Toe
开发语言·后端·算法·rust