Calling instance method from value class constructor is a little confusing

Ethan McCue ethan at mccue.dev
Sun Oct 26 03:12:41 UTC 2025


Just a note from playing with the EA build. Minimal example:

import java.util.ArrayList;

value class HittableList2 {
    private final ArrayList<Object> objects
            = new ArrayList<>();

    HittableList2() {}

    HittableList2(Object object) {
        add(object);
    }

    void add(Object object) {
        objects.add(object);
    }
}

This gives the error

/Users/emccue/Development/raytracer/src/HittableList2.java:10: error:
cannot reference add(Object) before constructor has been called
        add(object);
        ^

I know this means the superclass's constructor (and that I need to put an
explicit super() at the top of the method), but reading that straight
"cannot reference ... before constructor has been called - I'm in the
constructor!"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/valhalla-dev/attachments/20251025/3028b1c8/attachment.htm>


More information about the valhalla-dev mailing list