在我的项目中,我有一个小数据结构<code>Key</code>。
public class Key implements Serializable {
private static final long serialVersionUID = 1L;
public String db;
public String ref;
public Object id;
protected Key() {
}
public Key(String db, String ref, Object id) {
this.db = db;
this.ref = ref;
this.id = id;
}
}
是的,这个类很简单,每个字段都可以公开访问。
但是有人建议我使用POJO风格的课程,但当我问为什么他们无法告诉我时。
在我看来,调用 getter 和 setters 比直接进入一个领域要慢。
那么为什么我必须使用POJO编程风格呢?
Getter和setter,尤其是最简单的表单,将被即时编译器内联,从而消除方法调用开销。这听起来很像过早的优化。如果您遇到瓶颈,请分析并查看它发生的位置。我相当确定它不会出现在属性访问中。
使用私有类变量和公共getter和setter,这将为您提供封装。
摘自维基百科:
POJO是Plain OldJavaObject的首字母缩写,该名称用于强调给定对象是普通的Java对象,而不是特殊对象。
POJO通常很简单,因此不依赖于其他库、接口或注释。这增加了在多种项目类型(web、桌面、控制台等)中重用的机会。
正如有人已经在评论中指出的,你的对象在技术上已经是一个POJO了,但是你特别提到了更类似于JavaBeans的getters和setters。
我可以想到使用getter和setter的许多原因:
是的,通过方法调用访问或设置值可能比直接字段访问要慢,但这种差异几乎看不出来,而且肯定不会成为程序的瓶颈。
虽然优势很明显,但这并不意味着获取者和二传手是银弹。在设计现实世界的、健壮的可扩展类时,有许多“陷阱”需要考虑。
对于一个非常类似的问题,这个答案详细介绍了在设计具有getter和setter的类时的一些注意事项。尽管这些建议可能更相关,这取决于您正在设计的类的类型,例如,与简单的数据传输对象相反,构成大型系统中API一部分的类。
还要注意,在某些情况下,具有直接字段的类可能是有利的,例如当速度很重要或内存有限时,尽管只有在分析代码并发现它实际上是一个瓶颈后才应该考虑这一点。
还要小心,不要只是将所有字段包装在 getter 和 setter 中,因为这确实缺少封装的要点。
这个答案很好地总结了选择 POJO 而不是具有 getter 和 setter 的 JavaBean 样式对象的原因。
本文向大家介绍AJAX的优势是什么?相关面试题,主要包含被问及AJAX的优势是什么?时的应答技巧和注意事项,需要的朋友参考一下 ajax是异步传输技术,可以通过javascript实现,也可以通过JQuery框架实现,实现局部刷新,减轻了服务器的压力,也提高了用户体验。
我对Spring框架相当陌生,所以我为这个愚蠢的问题道歉。我一直在学习Javabean;我也一直在阅读Spring框架是如何成为bean容器的,以及如何有不同类型的bean(使用JavaBeans的优势是什么?)。 然而,我仍然不明白他们为什么如此强大。如果我们想,比如说,创建一个Spring web应用程序,我们不能不使用bean,而只使用POJO吗?与POJO相比,使用Java bean的真正
本文向大家介绍使用vuex的优势是什么?相关面试题,主要包含被问及使用vuex的优势是什么?时的应答技巧和注意事项,需要的朋友参考一下 其实vuex中的所有功能都能够通过其他的方式进行实现,只不过vuex对这些方法进行了整合处理,使用起来更加便捷,同时也便于维护。全局状态变量的统一管理,有这么个中介你找不找他呢?
本文向大家介绍python语言的优势是什么,包括了python语言的优势是什么的使用技巧和注意事项,需要的朋友参考一下 Python是一门简单易学的编程语言。阅读好的Python程序感觉就像阅读英语,尽管是非常严格的英语。Python的这种伪代码特性是其最大强项之一,它可让你专注于解决问题的办法而不是语言本身。python的用途和优点都有什么呢? Python编程语言开发快,语言简洁,没那么多技巧
本文向大家介绍什么是Spring Actuator?它有什么优势?相关面试题,主要包含被问及什么是Spring Actuator?它有什么优势?时的应答技巧和注意事项,需要的朋友参考一下 这是Spring Boot中最常见的面试问题之一。根据Spring文件: 执行器是一个制造术语,指的是移动或控制某物的机械装置。执行机构可以从一个小的变化中产生大量的运动。 众所周知,Spring Boot提供了
我正在学习这个函数接口科目,我研究如何使用预定义的函数接口:谓词和函数。 所以我创建了几个实现: 这与简单地调用一个常规函数来完成这些任务有何不同? 是为了让lambdas使用它们吗?是否允许将它们作为方法参数传递? 我真的错过了这个技术的真正道理。