Java 在引用该类中的静态字段时是否应该使用类名?

Java 在引用该类中的静态字段时是否应该使用类名?,java,static,Java,Static,如果我有一个带有静态字段的类,例如: public class Foo { public static int bar; } …我想在其声明的类中引用此字段。我知道: public class Foo { public static int bar; public static int getBar() { return bar; } } 以及: 工作。在是否包含这样的类名之间有任何偏好或约定吗?感谢您的帮助。事实上,这完全是基于意见的。你应

如果我有一个带有静态字段的类,例如:

public class Foo {
    public static int bar;
}
…我想在其声明的类中引用此字段。我知道:

public class Foo {
    public static int bar;

    public static int getBar() {
        return bar;
    }
}
以及:


工作。在是否包含这样的类名之间有任何偏好或约定吗?感谢您的帮助。

事实上,这完全是基于意见的。你应该用你喜欢的任何方法。这两者都是平等的。但是我想补充一点,如果您使用的是getter/setter,那么就声明静态变量private:

公共类Foo{
专用静态整型条;
公共静态int getBar(){
返回杆;
}
公共静态内退杆(内退杆){
bar=_bar;
}
}

由于getter和setter方法都是静态的,因此它确保了它们都只使用
Foo
类的静态变量。这也解决了可读性问题。

实际上,它完全基于观点。你应该用你喜欢的任何方法。这两者都是平等的。但是我想补充一点,如果您使用的是getter/setter,那么就声明静态变量private:

公共类Foo{
专用静态整型条;
公共静态int getBar(){
返回杆;
}
公共静态内退杆(内退杆){
bar=_bar;
}
}

由于getter和setter方法都是静态的,因此它确保了它们都只使用
Foo
类的静态变量。这也解决了可读性问题。

我同意评论中提到的任何内容。除此之外,我还要记住代码的可读性,然后再决定。下面的代码片段给出了相同的想法:

public class Engine {
    private static boolean isOn = false;

    public static void doWork1() {
        if (isOn) { // check if engine is on
            // do some work
        }
    }

    public static void doWork2() {
        if (Engine.isOn) {
            // do some work
        }
    }
    ...
}

您可以看到,
doWork2()
方法通过使用类名提高了代码的可读性,即使没有对代码添加任何注释。

我同意注释中提到的任何内容。除此之外,我还要记住代码的可读性,然后再决定。下面的代码片段给出了相同的想法:

public class Engine {
    private static boolean isOn = false;

    public static void doWork1() {
        if (isOn) { // check if engine is on
            // do some work
        }
    }

    public static void doWork2() {
        if (Engine.isOn) {
            // do some work
        }
    }
    ...
}

您可以看到,
doWork2()
方法通过使用类名提高了代码的可读性,即使没有对代码添加任何注释。

这肯定是以前在这里问过的,但我更喜欢第一个版本。它是一个静态方法,这意味着我们知道返回的任何与类相关的字段都必须是静态的,不能是实例成员,为什么你会有一个公共静态字段的getter方法是另一个问题…@ohgodspeds这只是一个示例方法。我想他只是想从声明的方法中引用静态字段。当从声明的方法中调用时,不需要使用类限定符引用静态字段。只有在可能出现歧义(例如超类中的相同静态字段/方法)时,才需要对其进行限定(第二个版本)。但我个人更喜欢总是限定我的推荐人(是的,这只是一个偏好)这一定是以前在这里问过的,但我更喜欢第一个版本。它是一个静态方法,这意味着我们知道返回的任何与类相关的字段都必须是静态的,不能是实例成员,为什么你会有一个公共静态字段的getter方法是另一个问题…@ohgodspeds这只是一个示例方法。我想他只是想从声明的方法中引用静态字段。当从声明的方法中调用时,不需要使用类限定符引用静态字段。只有在可能出现歧义(例如超类中的相同静态字段/方法)时,才需要对其进行限定(第二个版本)。但我个人更喜欢对我的推荐人进行限定(是的,这只是一种偏好)