在Java中,惯例(就我而言)将您的字段变量保密并使用getter和/或setter访问它们。这样您就可以设置更改变量值的规则。但是如果变量是最终的呢?示例:publicclassTest{publicfinalintMY_INT;publicTest(intmyInt){MY_INT=myInt;}}这会被允许吗?它已编译并且工作正常,但它被认为是好的代码吗? 最佳答案 这可以编译,但它不是好的代码。MY_INT违反命名约定:全部大写的名称用于staticfinal变量,也称为“类常量”(参见this和this,Google'sJ
为包含map的类实现/提供getter/setter的最佳做法是什么?我看到的最常见的实现是:publicclassMyClass{privateMapmyMap;publicgetMyMap(){/*Returnanunmodifiablemap*/}publicsetMyMap(MapmyMap){...}}或者提供一个接口(interface)会更好:publicgetMyMap(){/*Returnamodifiablemap*/}publicaddToMap(Stringkey,Stringvalue){myMap.put(key,value);}为什么这种方法更好?
IntelliJ具有生成Javagetter的强大功能。例如,对于一个字段privatefinalStringfoo,它会生成一个gettergetFoo()。有什么方法可以配置IntelliJ以生成Stringfoo()格式的getter?我主要使用不可变对象(immutable对象)并且更喜欢这种语法。 最佳答案 很好的问题!只是为了澄清自IntelliJ15发布以来@DannyDan的回答......设置:Alt+插入选择Getter在RHS上从'...'打开模板配置从LHS创建一个新模板-请参见下面的示例确定并选择您的新模板
我在学习Java标准版的时候,经常使用getter和setter函数来隐藏变量,减少对变量的直接访问。几个消息来源告诉我,在Android中你不应该使用这些函数,而只能直接修改变量。原因是在Android中使用getters和setters时,由于开销而导致性能损失。导致更多内存使用并降低系统速度。这有什么道理吗?如果有,为什么使用getter和setter会导致性能损失? 最佳答案 截至文档发现here在android中使用getter和setter是个坏主意。正如它所说,thisisabadideaonAndroid.Virtu
JsonProperty并未覆盖jackson从getter获取的默认名称。如果我用ObjectMapper和jackson序列化下面的类,我会得到{"hi":"hello"}如您所见,JsonProperty注解没有效果classJacksonTester{Stringhi;@JsonProperty("hello")publicStringgetHi(){returnhi;}}将@JsonProperty放在字符串本身上也不起作用。似乎我可以更改名称的唯一方法是重命名setter/getter,唯一的问题是第一个字母总是小写 最佳答案
我正在用这样的类编写API:publicclassNKMPMission{privateStringname;privateintage;publicNKMPMission(Stringname,intage){this.name=name;this.age=age;}publicStringgetName(){returnname;}publicintgetAge(){returnage;}}我的问题:如何确保此NKMPMission类的用户仅访问getter?如何为这个功能引入setter,让我作为开发者可以设置,而用户不能设置? 最佳答案
为对象内的实例变量的setter和getter创建测试用例时。什么是最好的方法?在这里,我在测试中使用了get和set方法。这会是糟糕的测试策略吗?/***TestofsetFlightNumbermethod,ofclassFlight.*/@TestpublicvoidtestSetFlightNumber(){System.out.println("setFlightNumber");intflightNumber=1000;Flightinstance=newFlight();instance.setFlightNumber(flightNumber);//TODOreview
假设我有类:publicclassAge{privateintage;publicintgetAge(){returnthis.age;}}在我的主类中,我多次调用getAge()方法。所以我想知道是调用这么多次还是调用一次并将其分配给某个变量并使用该变量是否明智。哪个最好,为什么? 最佳答案 这很可能是您在知道需要之前就进行了优化的情况。该值只是一个整数,因此如果将值存储在多个位置,它不会占用大量内存。同时,它是一个非常简单的方法调用,执行起来不会花费太多时间。以您认为最易读的方式编写。然后,在您拥有可靠的代码版本后,您可以使用性
假设我有一个类型为的对象的句柄,配置告诉我它有一个int类型的bean属性,名称为age。如何检索此文档的setter/getter?有没有比在age中添加“get”并将“a”大写,并通过反射寻找该名称的方法更好的方法? 最佳答案 看看java.beans.Introspector.此类允许您获取类的属性列表。如果您知道属性名称,您可以调用Methodgetter=newPropertyDescriptor(propertyName,beanClass).getReadMethod();另请参阅:java.beans.Propert
如果在多线程中使用实例化,我们是否应该将私有(private)字段声明为volatile?在EffectiveJava,有一个例子,如果没有volatile,代码就无法工作:importjava.util.concurrent.TimeUnit;//Broken!-Howlongwouldyouexpectthisprogramtorun?publicclassStopThread{privatestaticbooleanstopRequested;//works,ifvolatileisherepublicstaticvoidmain(String[]args)throwsInter