Парадокс констант в Java

Сегодня, читая обсуждения на тему того, чем является константа в Java, я наткнулся на интересный парадокс и не могу найти для себя внятного ответа.

Пример 1: Допустим, у нас есть класс Math со static final переменной PI, которая является константой и должна быть одной и той же в рамках всего класса. Её нет смысла определять только с модификатором final, так как она должна быть общей для всех экземпляров класса:

public class Math {
    private static final double PI = 3.141592653589793;
}

Пример 2: У нас есть класс Person, в котором определена final переменная id. Она неизменяема в рамках одного экземпляра класса, но может иметь разные значения для разных объектов. Однако для конкретного объекта она является константой:

public class Person {
    private final int id;

    public Person(int id) {
        this.id = id;
    }
}

Примеры очень условные. Отсюда возникло моё непонимание: что на самом деле в Java принято считать константой? Только переменную с модификатором final или переменную, имеющую модификаторы static final в связке?

Был бы очень признателен за разъяснение.


Ответы (0 шт):