草庐IT

java - Java 中 getter 的命名约定有多重要?

我非常相信一致性,因此也相信惯例。但是,我目前正在开发一个Java框架,其中这些约定(特别是get/set前缀约定)似乎妨碍了可读性。例如,某些类将具有id和name属性,并使用o.getId()而不是o.id()似乎完全没有意义,原因有很多:类是不可变的,因此(通常)不会有相应的setter,不会混淆,get在这种情况下不传达额外的语义,并且我在整个图书馆中始终如一地使用这种get-less命名模式。我从JavaCollection类(以及JavaPlatform库中的其他类)那里得到了一些保证,它们也违反了JavaBean约定(例如,它们使用size而不是getSize等)。为了解

java - 如何通过名称调用 getter 方法?

我有以下bean类:publicclassA{privateStringfield;publicStringgetField(){returnfield;}privateStringsetField(Stringfield){this.field=field;}}还有下面的类:publicclassB{publicstaticvoidmain(String[]args){Aa=newA();//dostuffStringf=//geta'sfieldvalue}}如何获取classA的特定对象的getter返回值?当然,我可以使用Method.invoke(Objectobj,Obje

java - 数组的 getter 和 setter

我有几个关于数组的getter和setter的问题。假设我们有一个这样的类,它在其构造函数中创建一个数组的私有(private)副本:importjava.util.Arrays;publicclassFoo{privateint[]array;publicFoo(int[]array){this.array=Arrays.copyOf(array,array.length);}}我们希望数组只能通过getter和setter来访问/改变。如果我们有一个看起来像这样的getter:publicint[]getArray(){returnarray;}它违背了getter的目的,因为我们

java - 如何在 getter 和 setter 中使用枚举?

所以我想做的是:写一个用户类一个用户:有一个用户名,例如“fj3”有一个用户类型,可以是:'user'、'editor'或'admin'有一个名字,例如'Francis'有一个以用户名、用户类型和名称为参数的构造函数有一个getUsername()方法有一个getUserType()方法有一个getName()方法有一个setUserType()方法,该方法将其中一种用户类型作为参数到目前为止我的代码:publicclassUser{publicStringid;publicStringuserPermissions;publicStringactualName;publicUser(

java - Getter-Setter 和私有(private)变量

这个问题在这里已经有了答案:Whyusegettersandsetters/accessors?(37个答案)Whatisthepointofsettersandgettersinjava?[duplicate](14个答案)关闭8年前。如果我可以通过getter-returnedreference改变private变量的值,那不是绕过了setter方法吗?这不是违背了getter-setter和私有(private)变量的目的吗publicclassTest{privateDimensioncannotBeChanged;publicTest(intheight,intwidth){

java - 当字段变量是最终变量时是否需要 setter/getter ?

在Java中,惯例(就我而言)将您的字段变量保密并使用getter和/或setter访问它们。这样您就可以设置更改变量值的规则。但是如果变量是最终的呢?示例:publicclassTest{publicfinalintMY_INT;publicTest(intmyInt){MY_INT=myInt;}}这会被允许吗?它已编译并且工作正常,但它被认为是好的代码吗? 最佳答案 这可以编译,但它不是好的代码。MY_INT违反命名约定:全部大写的名称用于staticfinal变量,也称为“类常量”(参见this和this,Google'sJ

java - IntelliJ 可以生成没有 "get"前缀的 getter 吗?

IntelliJ具有生成Javagetter的强大功能。例如,对于一个字段privatefinalStringfoo,它会生成一个gettergetFoo()。有什么方法可以配置IntelliJ以生成Stringfoo()格式的getter?我主要使用不可变对象(immutable对象)并且更喜欢这种语法。 最佳答案 很好的问题!只是为了澄清自IntelliJ15发布以来@DannyDan的回答......设置:Alt+插入选择Getter在RHS上从'...'打开模板配置从LHS创建一个新模板-请参见下面的示例确定并选择您的新模板

java - Setter 和 Getter 函数。在安卓系统中。性能开销?

我在学习Java标准版的时候,经常使用getter和setter函数来隐藏变量,减少对变量的直接访问。几个消息来源告诉我,在Android中你不应该使用这些函数,而只能直接修改变量。原因是在Android中使用getters和setters时,由于开销而导致性能损失。导致更多内存使用并降低系统速度。这有什么道理吗?如果有,为什么使用getter和setter会导致性能损失? 最佳答案 截至文档发现here在android中使用getter和setter是个坏主意。正如它所说,thisisabadideaonAndroid.Virtu

java - Jackson 没有使用 @JsonProperty 覆盖 Getter

JsonProperty并未覆盖jackson从getter获取的默认名称。如果我用ObjectMapper和jackson序列化下面的类,我会得到{"hi":"hello"}如您所见,JsonProperty注解没有效果classJacksonTester{Stringhi;@JsonProperty("hello")publicStringgetHi(){returnhi;}}将@JsonProperty放在字符串本身上也不起作用。似乎我可以更改名称的唯一方法是重命名setter/getter,唯一的问题是第一个字母总是小写 最佳答案

java - 仅向客户端共享 getter 方法的最佳方法是什么?

我正在用这样的类编写API:publicclassNKMPMission{privateStringname;privateintage;publicNKMPMission(Stringname,intage){this.name=name;this.age=age;}publicStringgetName(){returnname;}publicintgetAge(){returnage;}}我的问题:如何确保此NKMPMission类的用户仅访问getter?如何为这个功能引入setter,让我作为开发者可以设置,而用户不能设置? 最佳答案