Публичный статический конечный объект Java

Следующий код, содержащий файл здесь

public abstract class Quart extends TweenEquation {
    public static final Quart IN = new Quart() {
        @Override
        public final float compute(float t) {
        return t*t*t*t;
    }
    ...

если я вызываю Quart.IN.compute(0.5f) где-то в моем работающем приложении (например, в функции render(), которая вызывается 60 раз в секунду), это создает новый Quart при каждом вызове или он просто выделяется один раз??

это имеет смысл, верно?

спасибо, ура

4 ответа

Решение

По определению, окончательная переменная может быть назначена только один раз. И статические поля класса инициализируются при загрузке класса. Очевидно, что IN Экземпляр Quart создается только один раз.

Только раз. Статическое поле IN инициализируется при первом доступе к классу Quart.

Вы также можете проверить, что он создан только один раз, записав выходные данные при создании экземпляра Quart:

public abstract class Quart extends TweenEquation {
    public static final Quart IN = new Quart() {

        { System.out.println("created"); }

        @Override
        public final float compute(float t) {
            return t*t*t*t;
        }
    ...

это просто выделено один раз

Да, ты звонишь compute Метод всегда на одном и том же объекте.

Другие вопросы по тегам