为了账号安全,请及时绑定邮箱和手机立即绑定

摆脱或复制私有静态

摆脱或复制私有静态

拉莫斯之舞 2021-10-28 09:13:19
我有以下代码: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; }在朱莉娅它会是calcTotalMass() = bike_mass + human_mass但那是另一回事了。在 C++ 中,访问说明符是成组的,这样private不必为每个方法重复。Java 中是否有类似的东西,或者这就是语言的构建方式?
查看完整描述

1 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

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

然而

  • 您可以将方法放在嵌套的类/接口中并声明嵌套类型为私有。不幸的是,代码向右倾斜,这从来都不是好事。另外,IIRC,有一些奇怪的东西阻止了import static您自己的嵌套类。

  • 如果你想费心去测试这些方法,private是一个非常糟糕的选择。最好将它们放在单独的“包私有”类或接口中。

  • 类成员的默认访问修饰符是“包私有”,这可能是可以接受的。

  • 接口成员的默认访问修饰符public很有用。对于成员变量,您还可以将static.

还有一个 JEP,Concise Method Bodies,它可以让你的代码更短,更像你的 Julia 示例。

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


查看完整回答
反对 回复 2021-10-28
  • 1 回答
  • 0 关注
  • 145 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信