Подтвердить что ты не робот

Примеры Java-констант (создать Java файл, содержащий только константы)

Какова наилучшая практика объявления Java файла с константой?

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

ИЛИ

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

Ответ 1

Ни один. Используйте 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);
        }
}

Смотрите ссылку на wiki: http://en.wikipedia.org/wiki/Constant_interface

Ответ 2

- Создайте Class с полями public static final .

- И затем вы можете получить доступ к этим полям из любого класса с помощью Class_Name.Field_Name.

-. Вы можете объявить Class как final, так что Class не может быть расширен (Унаследовано) и изменить....

Ответ 3

Оба действительны, но я обычно выбираю интерфейсы. Класс (абстрактный или нет) не требуется, если нет реализаций.

Как совет, старайтесь выбирать местоположение своих констант с умом, они являются частью вашего внешнего контракта. Не помещайте каждую константу в один файл.

Например, если группа констант используется только в одном классе или один метод, поместите их в этот класс, расширенный класс или реализованные интерфейсы. Если вы не позаботитесь, у вас может возникнуть большой беспорядок зависимости.

Иногда перечисление является хорошей альтернативой константам (Java 5), ​​взгляните на: http://docs.oracle.com/javase/1.5.0/docs/guide/language/enums.html

Ответ 4

Вы также можете использовать класс свойств

Здесь файл констант с именем

# 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"));
    }

Ответ 5

Этот вопрос старый. Но я хотел бы упомянуть о другом подходе. Использование Enums для объявления постоянных значений. Основываясь на ответе Nandkumar Tekale, Enum можно использовать, как показано ниже:

Enum:

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);
    }

}

Ссылка: Использование Enums для объявления постоянных полей предлагается Джошуа Блохом в его книге "Эффективная Java".