Pregunta

following code, containing file is 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;
    }
    ...

if i call Quart.IN.compute(0.5f) somewhere in my running application (e.g. in a render() function that is called 60 times per second), does this create a new Quart on every call, or is it just allocated once?

it would make sense, right?

thanks, cheers

¿Fue útil?

Solución

By definition, a final variable can only be assigned once. And static fields of a class are initialized when the class is loaded. So obviously, the IN Quart instance is created just once.

Otros consejos

is it just allocated once

Yes, you're calling the compute method always on the same single object.

Just once. The static field IN is initialized during the first access to the class Quart.

You can also check it's created only once by writing output when an instance of Quart is created:

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;
        }
    ...
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top