摆脱或复制私人静态

Get rid or duplicate private static

我有以下代码:

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 中所有内容都在 class 中并且我无法定义全局函数,因此 static 并且需要访问说明符。

在 C++ 中,我可以将第一个函数缩短为

double calcTotalMass() { return bike_mass + human_mass; }

在 Julia 中是

calcTotalMass() = bike_mass + human_mass

但那是另外一回事了。

在 C++ 中,访问说明符是分组的,因此不必为每个方法重复 private。 Java 中是否有类似的东西,或者这就是语言的构建方式?

不,每个成员都有单独指定的访问权限。

但是

  • 您可以将方法放在嵌套 class/interface 中并声明嵌套类型为私有。不幸的是,代码向右倾斜,这从来都不是好事。另外,IIRC,有一些奇怪的东西阻止了 import static 从你自己的嵌套 class.
  • 如果您想测试这些方法,private 是一个非常糟糕的选择。最好将它们放在单独的 "package private" class 或界面中。
  • class 成员的默认访问修饰符是 "package private",这可能是可以接受的。
  • 接口成员的默认访问修饰符是public,这很有用。对于成员变量,您还可以垃圾 static.

还有一个 JEP,Concise Method Bodies,它可能会使您的代码更短一些,更像您的 Julia 示例。

(虽然我在这里:方法名称中的 "calc" 通常是多余的。可变静态是一个非常非常糟糕的主意。)