A few abstractions on this earth are so common in Java that they deserve a common interface:
Copyable —
a thing that can be copied (without the silly casting of Cloneable)Named —
a thing that has a nameResettable —
a thing that has state which can be resetStrigifier —
a thing which converts an object to a stringStrigifier —
a thing that can take a type and return an instance of that type