首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >什么是普通旧Java对象(POJO)?

什么是普通旧Java对象(POJO)?
EN

Stack Overflow用户
提问于 2010-07-25 02:29:33
回答 8查看 41.3K关注 0票数 71

术语Plain Old Java Object (POJO)是什么意思?我找不到任何足够解释的东西。

POJO's Wikipedia page说POJO是一个普通的Java对象,而不是一个特殊的对象。那么,在Java中,是什么让和对象变得特别呢?

上面的页面还说,POJO不应该扩展预先指定的类,实现预先指定的接口或包含预先指定的注释。这是否也意味着POJO不允许实现像SerializableComparable这样的接口,或者像Applet这样的类,或者任何其他用户编写的类/接口?

另外,上面的政策(不扩展,不实现)是否意味着我们不允许使用任何外部库?

POJO到底用在哪里?

Java:更具体地说,允许我扩展/实现属于或任何外部库的类/接口吗?

EN

回答 8

Stack Overflow用户

发布于 2010-07-25 02:37:58

According to Martin Fowler,他和其他一些人提出了一种描述标准类而不是EJB等的方法。

票数 10
EN

Stack Overflow用户

发布于 2010-07-25 02:37:43

这个术语的用法意味着它应该告诉你什么。例如,如果一个依赖注入框架告诉你可以将一个POJO注入到任何其他的POJO中,他们想说的是你不需要做任何特殊的事情:不需要遵守任何与你的对象的约定,不需要实现任何接口或扩展特殊的类。你可以使用你已经拥有的任何东西。

更新以提供另一个示例: Hibernate可以将任何POJO (您创建的任何对象)映射到SQL表,而在核心数据(iPhone上的Objective C)中,您的对象必须扩展NSManagedObject,以便系统能够将它们持久化到数据库中。从这个意义上说,核心数据不能与任何POJO (或者更确切地说,POOCO=PlainOldObjectiveCObject)一起工作,而Hibernate可以。(我可能不是100%正确的re Core数据,因为我刚刚开始收集它。欢迎任何提示/更正:-) )。

票数 7
EN

Stack Overflow用户

发布于 2010-07-25 02:32:33

普通旧Java对象:)

你说得好像这些都是可怕的限制。

在通常使用POJO的上下文中,它更像是一种好处:

这意味着,无论您使用的是什么库/API,都完全愿意处理没有以任何方式被篡改或人为处理的Java对象,也就是说,您不需要做任何特殊的事情就可以让它们工作。

例如,Java处理器将(我认为)很高兴地序列化没有实现Serializable接口的XStream类。这是一个加分!许多使用数据对象的产品都会强迫您实现SomeProprietaryDataObject,甚至扩展AbstractProprietaryDataObject类。许多库都期望bean行为,即getter和setter。

通常,与POJO一起工作的东西也会与不那么PO-JO一起工作,所以XStream当然也会序列化可序列化的类。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3326319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档