我只是想知道在类实例中使用getter方法访问类变量是否可取,以及直接访问是否存在任何明显的性能差异。尤其是在jvm中预计会生成很多对象的情况下。 最佳答案 在Java中,约定从类外部通过getter/setter访问所有字段。从类内部,您通常直接访问字段。但是,您也可以根据需要通过getter/setter访问它们。重要的是要知道这只是一个约定。许多其他编程语言没有这样严格的规则或其他概念。所以你不是被迫这样做的。但这是一个很好的做法。并且:不要介意性能!使用getters/setters不会影响应用程序的性能。JVM/Java就
我有一个关于在我的域对象中生成的getter和setter方法的小问题。我想为我的源代码使用一个通用的风格指南。该风格指南的一部分说我在每个类成员名称的开头都使用前缀“m”表示成员。classUser{StringmName;ListmAllCall;ListmAllGeo;不幸的是,我有几个具有更多成员变量的类。我遇到的问题是我是一个非常懒惰的开发人员,我在Eclipse中使用创建了getter和setter方法"Source"->"GenerateGettersandSetters".结果是publicStringgetmName(){returnmName;}publicvoid
我可以通过两种方式调用变量。一个就是这样:MyClassmyClass=newMyClass();myLocalVar=myClass.myVarVal;另一种方法是使用这样的setter/getter:myLocalVar=myClass.getMyVarVal();这两种方法都很好,但我想知道最有效/最正确的方法是什么?谢谢 最佳答案 这两种技术都很糟糕,但使用getter是常见(且更安全)的做法。为了访问类的公共(public)数据成员(又名公共(public)字段或公共(public)属性),您必须知道该类的实现细节(数据成
在Field中publicObjectget(Objectobj)方法的文档中类说Thevalueisautomaticallywrappedinanobjectifithasaprimitivetype.对于publicvoidset(Objectobj,Objectvalue)来说Iftheunderlyingfieldisofaprimitivetype,anunwrappingconversionisattemptedtoconvertthenewvaluetoavalueofaprimitivetype.所以我是对的,像getInt和setInt这样的特定原始getter和s
我正在使用EclipseKepler开发我的Java项目。我创建了一个vo并向vo添加了一些属性。要为这些属性生成getter和setter方法,我右键单击其中一个属性并转到“Source”,然后单击“GeneratesGettersandSetters”。它向我展示了属性的可用getter/setter方法。下面是屏幕截图正如您在上面的屏幕截图中看到的,Eclipse为属性sId提供了getter和setter方法publicStringgetsId(){returnsId;}publicvoidsetsId(StringsId){this.sId=sId;}get和set之后的第一
由于集合条目仅通过属性子集(hashCode()+equals())进行区分,因此有时需要对集合中包含的原始对象进行操作,这对于java.util.Set是不可能的。.我想到的唯一选择是:Map-不是一个非常简洁的解决方案。集合框架中还有其他替代方案吗?要求是:O(1)获取时间并且没有基于hashCode()+equals()的重复项结果。 最佳答案 如果再执行一次O(1)操作没有问题,您可以模拟缺少方法get(Object)用一对方法set.remove(Object)和set.add(Object).否则,我会使用Map正如您提
这个问题在这里已经有了答案:Howmockprivatemethodthatmodifyprivatevariables?(3个答案)关闭7年前。我有一个要测试的类(class)。它看起来类似于:publicclassClassUnderTest{privateDependency1dep1;privateDependency1getDependency1(){if(dep1==null)dep1=newDependency1();returndep1;}publicvoidmethodUnderTest(){....dosomethinggetDependency1().Invoke
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭6年前。Improvethisquestion更具体地说,我想编写一个代码,在给定值为负数时抛出IllegalArgumentException。我应该在setter/constructor中包含这段代码,还是应该在调用适当的方法时检查值?(例如:start()、init()、print()或run()。随便吧。)我的代码(简化版):publicclassLLUAlgorithm{privateinttemperature;publi
我编写这个getter/setter以从Eclipse源菜单中列出:publicDategetDate(){returndate;}publicvoidsetDate(Datedate){this.date=date;}Sonar报告两个问题:Returnacopyof"date"&Storeacopyof"date"有解释"Mutablemembersshouldnotbestoredorreturneddirectly"和示例代码:publicString[]getStrings(){returnstrings.clone();}publicvoidsetStrings(Strin
我想我在使用@Getter时发现了误报来自ProjectLombok的注释.在下面的示例类中,我收到警告“仅用作方法中的局部变量的私有(private)字段应成为局部变量”(squid:S1450)。publicclassExample{@GetterprivateStringexampleField;//有人可以证实吗?是SonarQube规则中的错误还是我的类(class)或我对该规则或@Getter注释的理解有问题?为了完整起见:项目lombok注释或生成的方法在其他SonarQube规则中被正确识别。所以我认为我的设置很好。我还尝试将@Getter注释放在类级别,但我收到了同样