简体   繁体   中英

java public static final object

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 (eg 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

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.

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;
        }
    ...

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM