43

声明只有常量的 java 文件的最佳做法是什么?

public interface DeclareConstants
{
    String constant = "Test";
}

或者

public abstract class DeclareConstants
{
    public static final String constant = "Test";
}
4

5 回答 5

93

没有一个。在必要时使用将final class for Constants它们声明为和静态导入所有常量。public static final

public final class Constants {

    private Constants() {
            // restrict instantiation
    }

    public static final double PI = 3.14159;
    public static final double PLANCK_CONSTANT = 6.62606896e-34;
}

用法 :

import static Constants.PLANCK_CONSTANT;
import static Constants.PI;//import static Constants.*;

public class Calculations {

        public double getReducedPlanckConstant() {
                return PLANCK_CONSTANT / (2 * PI);
        }
}

见维基链接:http ://en.wikipedia.org/wiki/Constant_interface

于 2012-09-20T17:47:05.560 回答
4

-创建Class一个public static final 字段

-然后您可以使用Class_Name.Field_Name.

-您可以将 声明classfinal,以便class 不能扩展(继承)和修改....

于 2012-09-20T17:52:26.173 回答
1

两者都有效,但我通常选择接口。如果没有实现,则不需要类(抽象与否)。

作为建议,请尝试明智地选择常量的位置,它们是您的外部合同的一部分。不要将每个常量都放在一个文件中。

例如,如果一组常量仅在一个类或一个方法中使用,则将它们放在该类、扩展类或实现的接口中。如果您不小心,最终可能会导致严重的依赖混乱。

有时枚举是常量(Java 5)的一个很好的替代品,看看: http ://docs.oracle.com/javase/1.5.0/docs/guide/language/enums.html

于 2012-09-20T18:18:15.800 回答
1

这个问题很老了。但我想提一下另一种方法。使用枚举来声明常量值。根据 Nandkumar Tekale 的回答,枚举可以按如下方式使用:

枚举:

public enum Planck {
    REDUCED();
    public static final double PLANCK_CONSTANT = 6.62606896e-34;
    public static final double PI = 3.14159;
    public final double REDUCED_PLANCK_CONSTANT;

    Planck() {
        this.REDUCED_PLANCK_CONSTANT = PLANCK_CONSTANT / (2 * PI);
    }

    public double getValue() {
        return REDUCED_PLANCK_CONSTANT;
    }
}

客户端类:

public class PlanckClient {

    public static void main(String[] args) {
        System.out.println(getReducedPlanckConstant());
        // or using Enum itself as below:
        System.out.println(Planck.REDUCED.getValue());
    }

    public static double getReducedPlanckConstant() {
        return Planck.PLANCK_CONSTANT / (2 * Planck.PI);
    }

}

参考: Joshua Bloch 在他的 Effective Java book 中建议使用枚举来声明常量字段。

于 2017-01-25T06:50:02.833 回答
1

您还可以使用 Properties 类

这是名为的常量文件

# this will hold all of the constants
frameWidth = 1600
frameHeight = 900

这是使用常量的代码

public class SimpleGuiAnimation {

    int frameWidth;
    int frameHeight;


    public SimpleGuiAnimation() {
        Properties properties = new Properties();

        try {
            File file = new File("src/main/resources/dataDirectory/gui_constants.properties");
            FileInputStream fileInputStream = new FileInputStream(file);
            properties.load(fileInputStream);
        }
        catch (FileNotFoundException fileNotFoundException) {
            System.out.println("Could not find the properties file" + fileNotFoundException);
        }
        catch (Exception exception) {
            System.out.println("Could not load properties file" + exception.toString());
        }


        this.frameWidth = Integer.parseInt(properties.getProperty("frameWidth"));
        this.frameHeight = Integer.parseInt(properties.getProperty("frameHeight"));
    }
于 2019-08-22T23:00:10.330 回答