Избавиться или дублировать приватную статику - PullRequest
0 голосов
/ 04 октября 2018

У меня есть следующий код:

private static double calcTotalMass() { return bike_mass + human_mass; }
private static double calcWeight() { return calcTotalMass() * grav_acc; }
private static double calcWork() { return calcWeight() * height; }
...

Поскольку в Java все находится в классе, и я не могу определить глобальные функции, static и спецификатор доступа необходимы.

В C ++ я мог бы сократить первую функцию до

double calcTotalMass() { return bike_mass + human_mass; }

В Julia это будет

calcTotalMass() = bike_mass + human_mass

, но это другая история.

В доступе C ++Спецификаторы находятся в группах, поэтому private не нужно повторять для каждого метода.Есть ли что-то похожее в Java или просто так построен язык?

1 Ответ

0 голосов
/ 05 октября 2018

Нет, каждый член имеет свой доступ, указанный индивидуально.

Однако

  • Вы можете поместить методы во вложенный класс / интерфейс и объявить вложенный тип закрытым.К сожалению, код смещается вправо, что никогда не бывает хорошо.Кроме того, IIRC, есть что-то странное, препятствующее import static из вашего собственного вложенного класса.
  • Если вы хотите испытать методы, private - действительно плохой выбор.Лучше поместить их в отдельный «пакетный» класс или интерфейс.
  • Модификатор доступа по умолчанию для членов класса - «частный пакет», который может быть приемлемым.
  • Модификатор доступа по умолчанию для членов интерфейсаpublic, что полезно.Для переменных-членов вы также можете пометить static.

Также имеется JEP, Краткий метод Body , который может сделать ваш код немного короче и больше похож на ваш пример Джулии..

(Пока я здесь: «calc» в имени метода обычно избыточен. Изменчивая статика - действительно очень плохая идея.)

...