我最近了解到,在Python3中,为了尽量减少类的访问器方法的数量,您可以使用字典来基本上只有一组访问器方法,如下所示:
def __init__(self,**kwargs):
self.properties = kwargs
def get_properties(self):
return self.properties
def get_property(self, key):
return self.properties.get(key, None)
这看起来非常有用,我想在java中应用类似的东西。我一直在研究可能具有多个属性的应用程序,创建和跟踪所有访问器方法可能是一件痛苦的事情。有没有类似的策略可以用于java?
3条答案
按热度按时间jbose2ul1#
不,java中没有kwargs。相反,您可以通过使用javavarargs将它们保存为java属性来实现与函数类似的功能。
你可以这样做:
示例代码:
qzlgjiam2#
我不确定这是否对你有帮助,但我还是会尽力回答的。我先做一个类变量。然后我会用一本字典做一本课堂字典lists:variables. 然后让函数以字典为参数。
fslejnso3#
如果它适合并且最适合的话就使用这个模式,但是它确实应该是java规则的一个例外——它可能不合适。
java中的最佳实践是对每个变量使用getter和setter方法。是的,这是更多的代码-所以-如果你的懒惰让你的ide自动生成它们。它在那里有很好的理由。很多好的理由。有些是;
提升私有变量
定义到其他类的外部接口,允许类控制设置或获取变量的内容和方式
通过建立处理对象变量的标准方法来促进良好的编码实践
将此模式移植到这里会遇到的问题是由于键入。python是动态类型的,java是静态类型的。因此,为了在java中使用相同的模式,您必须将值存储在类似字符串/对象数组的东西中,然后将它们作为对象或字符串返回。那你以后就得把它们改过来。如果你的“属性”都是字符串,那就没关系了。规则也有例外,但是你需要知道所有的规则才能很好地打破它们。如果它们是不同的类型(string、int、customobject等),请不要使用python中使用的相同模式。