java public static final对象

时间:2014-04-26 12:08:46

标签: java static final

以下代码,包含文件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次的render()函数中),这是否会在每次调用时创建一个新的Quart,或者是刚分配一次?

这是有道理的,对吧?

感谢, 欢呼声

4 个答案:

答案 0 :(得分:4)

根据定义,最终变量只能分配一次。并且在加载类时初始化类的静态字段。显然,IN Quart实例只创建一次。

答案 1 :(得分:0)

  

只是分配了一次

是的,您始终在同一个对象上调用compute方法。

答案 2 :(得分:0)

只有一次。静态字段IN在第一次访问Quart类时初始化。

答案 3 :(得分: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;
        }
    ...