这个问题在这里已经有了答案:Whyusegettersandsetters/accessors?(37个回答)关闭7年前。GettersandSettersarebad简要阅读上面的文章,我发现getter和setter是糟糕的OO设计,应该避免使用它们,因为它们违背了封装和数据隐藏。既然是这种情况,在创建对象时如何避免它,以及如何在模型对象中考虑到这一点。在需要getter或setter的情况下,可以使用哪些其他替代方法?谢谢。 最佳答案 你错过了重点。那篇文章的有效且重要的一点是:Don'taskfortheinformatio
我无法决定哪种方法更适合创建具有大量字段(10+)(都是必需的)getter/setter的构造方法的对象。构造函数至少您强制设置所有字段。JavaBeans更容易查看正在设置的变量,而不是一个巨大的列表。构建器模式在这里似乎不适合,因为所有字段都是强制性的,构建器要求您将所有强制性参数放入构建器构造函数中。谢谢,D 最佳答案 更好的方法(恕我直言)是使用某种构建器:MyClassa=newMyClassBuilder().blah("blah").foo("foo").doStuff().toMyClass();MyClass仍然
我无法决定哪种方法更适合创建具有大量字段(10+)(都是必需的)getter/setter的构造方法的对象。构造函数至少您强制设置所有字段。JavaBeans更容易查看正在设置的变量,而不是一个巨大的列表。构建器模式在这里似乎不适合,因为所有字段都是强制性的,构建器要求您将所有强制性参数放入构建器构造函数中。谢谢,D 最佳答案 更好的方法(恕我直言)是使用某种构建器:MyClassa=newMyClassBuilder().blah("blah").foo("foo").doStuff().toMyClass();MyClass仍然
下面这段代码,IDE里正常显示。不过,在build时,会报错。interfaceDoable{IntegergetCode();}@lombok.GetterclassDerivedClassimplementsDoable{intcode;}错误信息:Error:(11,5)java:DerivedClass不是抽象的,并且未覆盖Doable中的抽象方法getCode()Error:(13,13)java:DerivedClass中的getCode()无法实现Doable中的getCode()返回类型int与java.lang.Integer不兼容下面代码,IDE直接在int上标红线,提示错
已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是无关紧要的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,describetheproblem以及到目前为止为解决这个问题所做的工作。关闭8年前。Improvethisquestion你知道Lombok的替代品吗?使用Lombok,我们可以忘记使用getter和setter以及toString搞乱类。我想在我的项目中使用它,但是我想知道是否有更好的选择?我使用的是Java1.7,无法更改为1.8。
已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是无关紧要的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,describetheproblem以及到目前为止为解决这个问题所做的工作。关闭8年前。Improvethisquestion你知道Lombok的替代品吗?使用Lombok,我们可以忘记使用getter和setter以及toString搞乱类。我想在我的项目中使用它,但是我想知道是否有更好的选择?我使用的是Java1.7,无法更改为1.8。
本文主要内容:解释setter和getter的使用方法解释@property装饰器的妙用在python中,setter和getter方法并不像其它编程语言中的那样。基本上,在面向对象编程语言中,使用setter和getter方法的主要目的是为了确保数据的封装。不像其它面向对象编程语言,python中的私有变量并不是真正的隐藏字段。在python中,通常在以下情况会用到setter和getter方法:在获取或者设置属性值的时候使用setter和getter方法为其添加验证逻辑避免对类的某些字段直接访问,比如类的私有变量不应该被外部调用者直击访问或者修改使用普通函数实现setter和getter方
在下面的代码中,我们调用listType.getDescription()两次:for(ListTypelistType:this.listTypeManager.getSelectableListTypes()){if(listType.getDescription()!=null){children.add(newSelectItem(listType.getId(),listType.getDescription()));}}我倾向于重构代码以使用单个变量:for(ListTypelistType:this.listTypeManager.getSelectableListTyp
在下面的代码中,我们调用listType.getDescription()两次:for(ListTypelistType:this.listTypeManager.getSelectableListTypes()){if(listType.getDescription()!=null){children.add(newSelectItem(listType.getId(),listType.getDescription()));}}我倾向于重构代码以使用单个变量:for(ListTypelistType:this.listTypeManager.getSelectableListTyp
我有课classFoo{Stringname;//setter,getter}只有一个默认构造函数。然后,我尝试从某个字符串创建Foo列表:Arrays.stream(fooString.split(",")).map(name->{Foox=newFoo();x.setName(name);returnx;}).collect(Collectors.toList()));由于没有采用名称的构造函数,我不能简单地使用方法引用。当然,我可以使用构造函数调用和setter将这三行提取到一个方法中,但是有没有更好或更简洁的方法来做到这一点?(不改变Foo,这是一个生成的文件)