Μπλοκ αρχικοποίησης: παράδειγμα


import java.util.concurrent.ThreadLocalRandom;

class IdentifiedPoint {
    private double x, y;
    /** Unique point identifier */
    int identifier;
    /** Provide an identifier for each point */
    private static int nextIdentifier;

    /** Class initialization block */
    static {
        nextIdentifier = ThreadLocalRandom.current().nextInt();
    }

    /** Instance initialization block */
    {
        identifier = nextIdentifier++;
    }

    /** Point constructor */
    IdentifiedPoint(int ix, int iy) {
        x = ix;
        y = iy;
    }
    /** Point constructor */
    IdentifiedPoint() {
        x = y = 0;
    }

    static public void main(String args[]) {
        var a = new IdentifiedPoint(1, 2);
        var b = new IdentifiedPoint();
        System.out.println(a.identifier);
        System.out.println(b.identifier);
    }
}