Публичный статический конечный объект 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
Метод всегда на одном и том же объекте.