This repository contains my personal practice and code examples developed while studying the book "Effective Java" by Joshua Bloch (3rd Edition).
- Written from scratch: None of the code in this repository is a blind copy-paste. Every pattern, rule, and concept was thoroughly analyzed and then written entirely from scratch based on my own understanding of the logic.
- Focus on deep understanding: By implementing the examples independently without looking at the book's exact source code, I focused on building muscle memory and deeply internalizing Java best practices.
- Isolated drafts: Each folder acts as an independent mini-project or draft focused on a specific Item or Chapter from the book.
- Language: Java
- IDE / Editor: Visual Studio Code
The project is structured into folders representing specific concepts and items from the book:
Bounded Wildcards (PECS)— Practical application of the Producer Extends, Consumer Super principle.Varargs and Generics— Combining variable arguments and generics safely.Lazy Initialization— Different approaches to lazy initialization and thread safety.Exception Translation— Transforming low-level exceptions into higher-level abstractions.Do not Return Null— Returning empty collections or optionals instead of nulls.Chapter 7— Comprehensive practice with Lambdas and Streams.- ...and other folders covering key Java design principles and guidelines.