Java 清除或复制私有静态文件

Java 清除或复制私有静态文件,java,methods,dry,access-specifier,Java,Methods,Dry,Access Specifier,我有以下代码: 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中,所有东西都在一个类中,我不能

我有以下代码:

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中,所有东西都在一个类中,我不能定义全局函数,
静态
和访问说明符是必需的

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

double calcTotalMass() { return bike_mass + human_mass; }
在朱莉娅身上会是这样

calcTotalMass() = bike_mass + human_mass
但那是另一回事


<>在C++访问规范中,每个方法不必重复<代码>私有< /代码>。Java中是否有类似的东西,或者这就是语言的构建方式?

否,每个成员都有各自指定的访问权限

然而

  • 您可以将这些方法放在嵌套类/接口中,并将嵌套类型声明为private。不幸的是,代码向右倾斜,这永远都不好。还有,IIRC,有一些奇怪的东西阻止了从您自己的嵌套类导入静态的
  • 如果您想麻烦地测试这些方法,
    private
    是一个非常糟糕的选择。最好将它们放在单独的“包私有”类或接口中
  • 类成员的默认访问修饰符为“包私有”,这是可以接受的
  • 接口成员的默认访问修饰符是
    public
    ,这很有用。对于成员变量,您还可以废弃
    静态
还有一个JEP,它可能会使您的代码稍微短一些,更像您的Julia示例


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

不,每个成员都有各自指定的访问权限

然而

  • 您可以将这些方法放在嵌套类/接口中,并将嵌套类型声明为private。不幸的是,代码向右倾斜,这永远都不好。还有,IIRC,有一些奇怪的东西阻止了从您自己的嵌套类导入静态的
  • 如果您想麻烦地测试这些方法,
    private
    是一个非常糟糕的选择。最好将它们放在单独的“包私有”类或接口中
  • 类成员的默认访问修饰符为“包私有”,这是可以接受的
  • 接口成员的默认访问修饰符是
    public
    ,这很有用。对于成员变量,您还可以废弃
    静态
还有一个JEP,它可能会使您的代码稍微短一些,更像您的Julia示例


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

您需要在任何需要它的地方定义
private
。简短的回答是否定的,我相信如果你想让它的访问权限在类级别内,你需要把private关键字放到一个方法中。这些额外的关键字真的重要吗?有多少是你写的,你真的需要关心添加“private static”几次?你需要定义
private
,只要你需要它。简短的回答是不,我相信你需要把private关键字放到一个方法中,如果你想让它的访问权限在类级别内,这些额外的关键字真的重要吗?有多少是你写的,你真的需要关心添加“私有静态”几次?嗯,我正在测试这些方法。我目前只使用一个类(即没有类),所以我的测试代码只是在
public void
方法中。杰普已经是个人物了吗?因为上面写的是草稿。这种语法会很棒。很高兴知道我可以省去访问说明符(在我当前的代码中没有区别)。是的,我知道代码不好,但这是我的快速uni赋值,只使用一些全局变量最简单,因为使用stdin:)中的值只进行一次计算。您对可变静态的实际含义是什么?@PostSelf mutable static(又称全局状态):一个静态字段,可以自己修改,也可以直接或间接引用一个可以修改的实例字段。是的,我明白了。所以模拟成一个全局变量。这就是我的想法。我正在测试这些方法。我目前只使用一个类(即没有类)因此,我的测试代码只是在一个
public void
方法中。JEP已经是一个东西了吗?因为它在文档顶部显示draft。这种语法太棒了。很高兴知道我可以省去访问说明符(在我当前的代码中没有区别).是的,我知道代码不好,但这是我的快速uni赋值,只使用一些全局变量最简单,因为使用stdin:)中的值计算只发生一次。您对可变静态的实际含义是什么?@PostSelf mutable static(也称为全局状态):一个可以自行修改的静态字段,或者直接或间接引用可以修改的实例字段。是的,我明白了。因此,将模拟转换为全局变量。我就是这么想的