The Java way was always to let library designers decide how a type is used. I personally think this is the sensible one.