Class MutableThing<B extends IImmutableThing>

java.lang.Object
dev.enola.thing.impl.MutablePredicatesObjects<B>
dev.enola.thing.impl.MutableThing<B>
All Implemented Interfaces:
Builder<B>, HasIRI, PredicatesObjects, PredicatesObjects.Builder<B>, PredicatesObjects.Builder2<B>, Thing, Thing.Builder<B>, Thing.Builder2<B>, ThingOrBuilder<B>

public class MutableThing<B extends IImmutableThing> extends MutablePredicatesObjects<B> implements ThingOrBuilder<B>
Implementation of both Thing and its Thing.Builder which is simple and mutable.

When build() then it returns an IImmutableThing copy of this (NOT itself).

This implementation is pretty inefficient, for both its runtime performance and memory consumption, and should only be used "shortly lived"; prefer (building this into a) IImmutableThing implementations, such as (typically) the ImmutableThing or its generated subclasses, for any objects that will be "kept around".

This implementation is not thread safe, obviously.