Follow up: instance control in Java without enum
<p>This is a follow up to <a href="http://stackoverflow.com/questions/892304/how-to-guarantee-java-instance-control-without-enum-in-world-of-serialization">this question</a>.  Is this solution watertight?</p>

<pre><code>public final class Thing implements Serializable {

    private static final long serialVersionUID = 1L;

    private static final Thing[] instances = new Thing[2];
    private static int nextOrdinal = 0;

    public static final Thing instance0 = new Thing("whatever0");
    public static final Thing instance1 = new Thing("whatever1");

    private transient final String someState;

    public String someMethod() {return someState;}

    private final int ordinal;

    private Thing(String someState) {
        this.someState = someState;
        this.ordinal = nextOrdinal++;
        instances[this.ordinal] = this;
    }

    private Object readResolve() throws ObjectStreamException {
        return instances[this.ordinal];
    }
}
</code></pre>
