Default methods are, however, extremely useful for providing standard method implementations when an interface is created, to ease the task of implementing the interface (Item 20).
diormuhas quoted3 months ago
eliminate the class’s self-use of overridable methods entirely. In doing so, you’ll create a class that is reasonably safe to subclass. Overriding a method will never affect the behavior of any other method.
diormuhas quoted7 months ago
The toString method should return a concise, useful description of the object
diormuhas quoted8 months ago
providing a good toString implementation makes your class much more pleasant to use and makes systems using the class easier to debug.
diormuhas quoted9 months ago
when is it appropriate to override equals? It is when a class has a notion of logical equality that differs from mere object identity and a superclass has not already overridden equals.
diormuhas quoted9 months ago
The Boolean.valueOf(boolean) method illustrates this technique: it never creates an object. This technique is similar to the Flyweight pattern [Gamma95]. It can greatly improve performance if equivalent objects are requested often, especially if they are expensive to create.
diormuhas quotedlast year
Note that a nonzero-length array is always mutable, so it is wrong for a class to have a public static final array field, or an accessor that returns such a field.
diormuhas quotedlast year
a method overrides a superclass method, it cannot have a more restrictive access level in the subclass than in the superclass
diormuhas quotedlast year
The rule of thumb is simple: make each class or member as inaccessible as possible.
diormuhas quotedlast year
Use of the relational operators < and > in compareTo methods is verbose and error-prone and no longer recommended.