2014-04-26 6 views
1

следующий код, содержащий файл является hereява общественный статический конечный объект

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) где-то в моем запущенном приложении (например, в функции визуализации(), которая вызывается 60 раз в секунду), создает ли это новый Quart при каждом вызове или просто выделяется один раз?

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

спасибо, веселит

ответ

3

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

0

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

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

0

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

0

Вы также можете проверить это создается только один раз, написав вывод, когда экземпляр 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; 
     } 
    ... 
Смежные вопросы