众所周知,Python类不能拥有真正的私有成员。 not- as - 这意味着Java类的私有性被公开给Jython。 (隐藏你的下体,Java!)
因此,当使用Jython并访问通常通过getter和setter暴露给其他Java类的Java类私有时,您是否还想使用这些方法?或者您只是直接访问私人?
更相关的问题是,应该你使用getter和setter?如果这些方法存在副作用,那么答案肯定是'是',但是如果方法就在那里,因为有人认为在任何地方放置吸气剂和定位器是正确的事情(IMO不是,只是制造那该死的东西是公共的),那么有没有理由打扰所有Java的额外仪式?
答案 0 :(得分:5)
虽然Jython可以从任何地方访问非公共Java成员this is a feature that must be enabled explicitly。仅此一点就足以让我尊重Java类的可见性,否则你会冒处理我的机器问题。
更主要的是,你应该为不受你控制的类使用提供的属性访问器,除非你有充分的理由不这样做:你永远不知道这个类的未来版本是否会做的不仅仅是他们的最低版本getter / setter方法。
Jython具有hiding the accessor methods of JavaBean properties的优点。 Jython将x.foo += 5
转换为x.setFoo(x.getFoo() + 5
。因为通常属性的支持字段与属性本身具有相同的名称,所以您可能会将此功能与“Jython使支持字段可访问”混淆,即使它没有。我肯定会使用Jython的这种属性访问类似字段的语法:它使你的代码更简洁,更容易阅读。