Почему Point позволяет вам обращаться к x и y напрямую? - PullRequest
4 голосов
/ 27 мая 2011

И x, и y, и целые числа, тогда как getX() и getY() возвращают двойные числа.

Почему нет, например, getXIntValue(), getXDoubleValue() и наоборот для y

Ответы [ 3 ]

5 голосов
/ 27 мая 2011

Обратите внимание на @since в Javadoc - 1.0

Существует широкий консенсус в отношении того, что Point был очень плохо спроектирован.

4 голосов
/ 27 мая 2011

Point расширяет Point2D, а Point2D имеет getX () и getY (), определенные как возвращающие double.Как @Dilum упоминает выше, его плохой дизайн из каменных веков Ява.

1 голос
/ 27 мая 2011

Как уже говорили другие, это потому, что оно древнее.Но мне это нравится, потому что это экономит печатать и добавляет ясности;ИМХО геттеры и сеттеры могут быть пустой тратой времени для простых классов, если они общедоступны, и все, что они собираются сделать, это вернуть значение и установить его, что вам нужно в 99% случаев.

Философия дизайна изменилась, и теперь все используют их.Но все идет полным ходом, и в современных языках, таких как Groovy, это были бы «свойства» с выведенными / получающими установщиками и синтаксисом, очень похожим на тот, который используется для доступа к публичным полям в Java.

Редактировать : и согласно (неофициальному) Руководство по стилю Scala ,

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...