我对getter/setter和构造函数的使用有点困惑(请参阅下面的代码示例)publicclassExampleClass{privateintvalue=0;publicExampleClass(){value=0;}publicExampleClass(inti){this.value=i;}publicintgetValue(){returnvalue;}publicvoidsetValue(intval){this.value=val;}publicstaticvoidmain(String[]args){ExampleClassexample=newExampleClass
这个问题在这里已经有了答案:Whyusegettersandsetters/accessors?(37个回答)关闭6年前。我看到了一段代码,其中getter和setter方法被声明为私有(private)的。我试图弄清楚它背后的逻辑,我真的很难理解你为什么要将它们声明为私有(private)?这与我们试图通过getter和setter实现的目标完全相反。 最佳答案 我能想到几个原因:您想阻止future的公共(public)访问。如果其他程序员看到您的代码并想要访问变量,但没有setter和getter,他可能会认为您只是忘记了它们
这个问题在这里已经有了答案:Whyusegettersandsetters/accessors?(37个回答)关闭6年前。我看到了一段代码,其中getter和setter方法被声明为私有(private)的。我试图弄清楚它背后的逻辑,我真的很难理解你为什么要将它们声明为私有(private)?这与我们试图通过getter和setter实现的目标完全相反。 最佳答案 我能想到几个原因:您想阻止future的公共(public)访问。如果其他程序员看到您的代码并想要访问变量,但没有setter和getter,他可能会认为您只是忘记了它们
以下是两种方法:具有所有类属性的构造函数优点:我必须输入准确数量的参数类型,所以如果我出错,编译器会警告我(顺便说一句,有没有办法防止错误地切换参数列表上的两个Integer的问题?)缺点:如果我有很多属性,则实例化行可能会变得很长,并且可能跨越两行或更多行setter和默认的空构造函数优点:我可以清楚地看到我在设置什么,所以如果我做错了什么,我可以在输入时立即查明它(我不能犯之前切换两个变量的错误同类型)缺点:具有大量属性的对象的实例化可能需要几行(不知道这是否真的是一个缺点),如果我忘记设置一个属性,编译器不会说什么。你会做什么,为什么?您是否知道建议的任何灯光模式(考虑到每次实例
以下是两种方法:具有所有类属性的构造函数优点:我必须输入准确数量的参数类型,所以如果我出错,编译器会警告我(顺便说一句,有没有办法防止错误地切换参数列表上的两个Integer的问题?)缺点:如果我有很多属性,则实例化行可能会变得很长,并且可能跨越两行或更多行setter和默认的空构造函数优点:我可以清楚地看到我在设置什么,所以如果我做错了什么,我可以在输入时立即查明它(我不能犯之前切换两个变量的错误同类型)缺点:具有大量属性的对象的实例化可能需要几行(不知道这是否真的是一个缺点),如果我忘记设置一个属性,编译器不会说什么。你会做什么,为什么?您是否知道建议的任何灯光模式(考虑到每次实例
这个问题在这里已经有了答案:Whyusegettersandsetters/accessors?(37个回答)关闭7年前。GettersandSettersarebad简要阅读上面的文章,我发现getter和setter是糟糕的OO设计,应该避免使用它们,因为它们违背了封装和数据隐藏。既然是这种情况,在创建对象时如何避免它,以及如何在模型对象中考虑到这一点。在需要getter或setter的情况下,可以使用哪些其他替代方法?谢谢。 最佳答案 你错过了重点。那篇文章的有效且重要的一点是:Don'taskfortheinformatio
这个问题在这里已经有了答案: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仍然
已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是无关紧要的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,describetheproblem以及到目前为止为解决这个问题所做的工作。关闭8年前。Improvethisquestion你知道Lombok的替代品吗?使用Lombok,我们可以忘记使用getter和setter以及toString搞乱类。我想在我的项目中使用它,但是我想知道是否有更好的选择?我使用的是Java1.7,无法更改为1.8。