При использовании классов Java из Jython, вы пытаетесь использовать геттеры и сеттеры?Тебе следует? - PullRequest
4 голосов
/ 03 октября 2011

Хорошо известно, что классы Python не могут иметь действительно закрытых членов.Не- как -очевидное следствие этого заключается в том, что приватные классы Java становятся общедоступными для Jython.(Спрячь свою наготу, Java!)

Итак, когда ты используешь Jython и получаешь доступ к частям классов Java, которые обычно открываются другим классам Java через геттеры и сеттеры, ты пытаешься использовать эти методы?Или вы просто получаете доступ к личным лицам напрямую?

Более уместный вопрос: следует использовать геттеры и сеттеры?Если есть побочные эффекты методов, то ответ, несомненно, будет «да», но если методы просто есть, потому что кто-то думал, что правильное решение - это использование геттеров и сеттеров везде (IMO это не так, просточертовски публично), тогда есть ли смысл беспокоиться о дополнительной церемонии Java?

1 Ответ

5 голосов
/ 03 октября 2011

Хотя Jython может сделать непубличные элементы Java доступными из любого места, эта функция должна быть включена явно .Одной этой причины является достаточной причиной для того, чтобы я соблюдал видимость классов Java, в противном случае вы рискуете работать на моей машине проблемы.

Более того, вы должны использовать предоставленные средства доступа к свойствам для классовне находятся под вашим контролем, если у вас нет очень веских причин не делать этого: вы никогда не знаете, будут ли будущие версии класса делать больше, чем просто минимум в своих методах получения / установки.

Jython имеет приятную особенность: скрытие методов доступа свойств JavaBean .Jython конвертирует x.foo += 5 в x.setFoo(x.getFoo() + 5.Поскольку обычно поле поддержки свойства имеет то же имя, что и само свойство, вы, возможно, спутали эту функцию с «Jython делает поле поддержки доступным», даже если это не так.Я бы определенно использовал этот синтаксис Jython для доступа к свойствам: он делает ваш код более лаконичным и легким для чтения.

...