The API uses this approach to avoid an issue involving
the serialVersionUID field. To guard
against serialVersionUID mismatches, as well as to improve
performance, any class or interface that
extends Serializable should declare a
serialVersionUID field. Since public interfaces can only
declare public members, a public interface that
extends Serializable would need to have a
public serialVersionUID field, meaning that any classes
implementing the interface would inherit
its serialVersionUID, and so would be prevented from
controlling their versioning separately. This issue does not crop up
for interfaces that do not extend Serializable, since they by
definition have a serialVersionUID of 0.
null is not explicitly specified as an acceptable
value for a method parameter, then the method does not
permit null to be passed as a value for that
parameter, and will throw a {@link java.lang.NullPointerException}
if null is passed (though it is left unspecified
whether or not NullPointerException takes precedence
over other types of exceptions that could also be thrown).
null is not explicitly specified as an acceptable
value for a method to return, then the method is not permitted to
return null.
null is not explicitly specified as an acceptable
value for a given collection (e.g. {@link java.util.Collection},
{@link java.util.List}, or {@link java.util.Set}) to contain, then
the collection is not permitted to contain null
elements.
null values generally
specify this at least in their parameter-level (i.e. @param
tag) or return value-level (i.e. @return tag)
documentation.