草庐IT

Getter-Setter

全部标签

java - 如果返回值是可变的,为什么要使用 getter 和 setter?

在C++中,私有(private)数据成员的getter和setter非常有用,因为它能够通过const返回值控制可变性。在Java中,如果我理解正确(如果我弄错了请纠正我),在getter上指定final不会那样工作。一旦调用者通过getter接收到数据成员引用,它就可以修改它,尽管它是私有(private)的......如果是这样(如果我在这里有严重的误解,请纠正我),为什么不声明数据成员public并简化事情呢? 最佳答案 在java中使immutable返回值是或者返回已经immutable对象类型(比如String)或者返

java - POJO 类中 "is"变量 getter/setter 的正确语法是什么?

如果一个类包含一个名为“blah”的变量,那么标准的getter/setter语法显然是getBlah()和setBlah()。但是,如果我有一个带有名为isBlah的变量的POJO类,我会使用:publictypegetIsBlah(){returnisBlah;}publicsetIsBlah(typeisBlah){this.isBlah=isBlah;}还是这样?publictypeisBlah(){returnisBlah;}publicsetBlah(typeblah){this.isBlah=blah;}第一种似乎更严格地符合POJO约定,但第二种类型是IntelliJ生

java - 通过反射在 Java 中调用 getter : What's the fastest way to repeatedly call it (performance and scalability wise)?

给定一个类Foo和一个属性bar,我在编译时都不知道,我需要重复调​​用getterFoo.getBar()很多很多次。假设我有:MethodbarGetterMethod=...;//Don'tworryhowIgotthis我需要做这样的事情:for(Objectfoo:fooList){//1000000000elementsinfooListObjectbar=barGetterMethod.invoke(foo);...}与不使用反射调用相比,上面的实现还是很慢的。有没有更快的方法?在Java中使用反射调用getter的最快方法是什么? 最佳答案

Java setter 和 getter

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭8年前。Improvethisquestion始终建议使用getter/setter来访问私有(private)变量。为什么将它们声明为公开并访问它们不是一个更好的主意。无论如何,我们正在使用getter和setter访问它?

java - JAXB 注释在 getter、setter 和成员上的区别是什么?

标题说明了一切。我想知道在字段/getter/setter上放置JAXB注释(如@XmlElement)之间的主要区别是什么。在我看来(在简单的情况下)这无关紧要。例如让我们拿这个classA{privateStringa;publicStringgetA(){returna;}publicvoidsetA(Stringa){this.a=a;}}现在在我看来,将@XmlElement放在成员字段或getter/setter上并不重要。它只是编码好。当我需要有所作为并且重要时,是否有任何用例?当我去解码这个(xml回到A)时,JAXB具体做了什么?我正在使用JAXBMOXy实现谢谢

java - 在 Java 中使用 getter 方法将元素添加到 List 是一种不好的做法吗?

假设我在一个类中有一个privateArrayList或一个LinkedList,我永远不会为它分配新的引用,或者换句话说,这永远不会发生:myLinkedList=anotherLinkedList;这样我就不需要使用setMyLinkedList(anotherLinkedList)。但是!我需要向其中添加元素或从中删除元素。我是否应该编写一种新的setter来完成adding而不是setting的任务,比如myLinkedList.add(someElement)?或者在不违反封装原则的情况下,使用getter可以做到这一点吗?getMyLinkedList().add(some

java - Hibernate 无法实例化默认的 tuplizer - 找不到 getter

我正在尝试使用Hibernate来持久化一个如下所示的类:publicclassItemimplementsSerializable,Comparable{//ItemidprivateIntegerid;//DescriptionofitemininventoryprivateStringdescription;//Numberofitemsdescribedbythisinventoryitemprivateintcount;//CategoryitembelongstoprivateStringcategory;//DateitemwaspurchasedprivateGrego

java - Java POJO 是否应该在 setter 方法中进行字段验证和抛出异常?

假设我们有数十个代表我的域的JavaPOJO,即我在系统中的数据,它们作为对象在我的系统的不同层之间流动。该系统可以是一个网络应用程序,也可以是一个简单的桌面应用程序。域由什么组成并不重要。在设计我的系统时,我很困惑应该在哪里放置任何验证逻辑。我的POJO(域对象)代表我的数据,这些对象中的一些字段必须遵守特定的标准,但是如果我在我的setter方法中放置大量验证逻辑,那么告诉调用客户端的唯一方法是抛出异常。如果我不希望系统崩溃,则异常必须是必须捕获和处理的已检查异常。这样做的结果是,每次我使用setter方法(甚至构造函数)创建一个新对象时,我都会重新抛出该异常或使用try-catc

java - 在 Java 中继承流利的 setter

我最近看到一些使用这种语法的代码(amazonhadoop代码)Foobar=newFoo().setX(10).setY(11);我觉得这很好,所以我决定试一试。使我的setX()类型函数返回Foo而不是void并将returnthis;放入所有函数中。这很好用。直到我用继承来尝试它,它产生了一些奇怪的结果。我将举一个具体的例子:我有两个类,Location类有两个字段,x和y。另一个类Location3D继承自Location并添加了第三个字段z。所有字段都使用上面描述的方法作为它们的setter。现在我想创建一个新的location3D实例并设置它的字段,会发生什么newLoca

java - 为什么在不可变类中的 getter 中制作防御性副本?

这个问题是关于良好的编程实践和避免潜在的漏洞。我读了JoshuaBloch的EffectiveJava,我想知道的是:为什么我应该考虑在我的不可变类中的getter方法中制作防御性副本,其中没有修改器?第二:除了private之外,我为什么还要将我的字段设置为final?这仅与性能有关(与安全性无关)吗? 最佳答案 我相信这种情况可以证明这种说法:publicclassImmutable{privatefinalStringname;privateDatedateOfBirth;publicImmutable(Stringname,