Effective Java

Item 1. Consider Static Factory Methods Instead of Constructorschevron-rightItem 2. Consider a Builder When Faced with Many Constructor Parameterschevron-rightItem 3. Ensure Singleton with Private Constructor or Enum Typechevron-rightItem 4. Enforce Noninstantiability with a Private Constructorchevron-rightItem 5. Prefer Dependency Injection to Hardwiring Resourceschevron-rightItem 6. Avoid Creating Unnecessary Objectschevron-rightItem 7. Eliminate Obsolete Object Referenceschevron-rightItem 8. Avoid Finalizers and Cleanerschevron-rightItem 9.Prefer try-with-resources to try-finallychevron-rightItem10. Adhering to General Rules When Overriding equalschevron-rightItem11. Override hashCode When You Override equalschevron-rightItem12. Always Override toStringchevron-rightItem13. Override Clone Judiciouslychevron-rightItem14. Consider Implementing Comparablechevron-rightItem15. Minimize the Accessibility of Classes and Memberschevron-rightItem16. Accessor Methods Over Public Fieldschevron-rightItem17. Minimize Mutabilitychevron-rightItem18. Composition over inherentancechevron-rightItem19. Design and Document for Inheritance, or Else Prohibit Itchevron-rightItem20. Prefer Interfaces to Abstract Classeschevron-rightItem21. Design Interfaces with Implementations in Mindchevron-rightItem22. Use Interfaces Only to define Typeschevron-rightItem23. Prefer Class Hierarchies to Tagged Classeschevron-rightItem24. Favor Static Member Classes Over Non-Staticchevron-rightItem28. Use Lists Instead of Arrayschevron-rightItem29. Prefer Generic Typeschevron-rightItem30. Favor Generic Methodschevron-right