Java公共静态常量对象

3
以下代码所包含的文件在此处:这里
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个回答

4

从定义上来说,final变量只能被赋值一次。并且类的静态字段在类加载时初始化。因此,显然,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;
        }
    ...

0
它是只分配一次吗? 是的,你总是在同一个对象上调用compute方法。

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接