Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用大量的getter和setter有效地填充POJO_Java_Refactoring_Properties_Getter Setter - Fatal编程技术网

Java 使用大量的getter和setter有效地填充POJO

Java 使用大量的getter和setter有效地填充POJO,java,refactoring,properties,getter-setter,Java,Refactoring,Properties,Getter Setter,我有一个POJO,它代表我的应用程序的所有属性。它包含大量字符串int和boolean(类变量及其getter/setter) 问题是,每次添加新属性时,我都必须添加变量、getter、setter、通过加载属性文件来设置它的代码以及使用getter的代码 我的想法是将其重构为一个getString(stringstringtoget),getInt和getBoolean方法,该方法从3个hashmaps中提取。这样做的问题是,我不能再使用EL来获取属性,例如${properties.telep

我有一个POJO,它代表我的应用程序的所有属性。它包含大量字符串int和boolean(类变量及其getter/setter)

问题是,每次添加新属性时,我都必须添加变量、getter、setter、通过加载属性文件来设置它的代码以及使用getter的代码

我的想法是将其重构为一个
getString(stringstringtoget)
getInt
getBoolean
方法,该方法从3个hashmaps中提取。这样做的问题是,我不能再使用EL来获取属性,例如
${properties.telephoneNumber}


有人有其他想法吗?

如果你有一个类,你绝对确定每个变量都有get/set,我只会公开这些变量。通常,不这样做的原因是,如果可能的话,您需要更改实现或更改变量名或类似的内容。如果你知道这不会发生,我会继续,改变对公众的访问

另外,如果您使用的是Eclipse(可能是其他IDE,但我不熟悉),它可以自动为您创建get/set方法,所以这不应该是一个麻烦


我不会使用你建议的解决方案。它将消除自动完成的便利性,这在有很多方法/变量时尤其需要。

使用IDE生成所有这些setter和getter

自JSF 2.0以来,您可以使用EL中的参数调用方法:

#{properties.getString('telephoneNumber')}

您应该考虑重构您的POJO,可能创建具有逻辑分组属性的较小POJO。您可能还希望了解在运行时为您生成getter/setter的方法,以保持代码更流畅。JavaBeans需要getter和setter。Pojo没有。我想你需要一个JavaBean来表示“EL”;)您应该能够使用IDE生成getter/setter,因此除了使代码混乱之外,它们不需要太多努力。我建议您不要这样做。它使您的代码非常脆弱。如果类是包私有的,那么您应该只公开每个公共成员变量,即使它是有争议的seconds@nsfyn55另一个问题是添加代码来调用setter并加载属性。另一种方法只是循环所有属性并将它们添加到hashmap中,因此每个setter不需要单独的代码。我喜欢你的答案。将JSF添加到项目中需要做很多工作吗?这取决于您的项目以及该项目已经完成的程度。将JSF添加到一个小的或新的项目中根本不需要努力。首先,请看一看。您能否提供一个流行IDE中的示例,使其更具建设性?