Preface 1. Java in Review Core Concepts Syntax Issues Access Issues Common Mistakes 2. The Final Final Constants Final Variables Final Parameters Final Collections Instance-Scoped Variables Final Classes Final Methods Conditional Compilation Using final as a Coding Standard 3. Immutable Types Fundamentals Immutable Problems Immutable or Not 4. Collections Collection Concepts Implementations Choosing a Collection Type Iterating Collections Collection Gotchas 5. Exceptional Code Two Types of Exceptions When to Use Exceptions Finally for Closure Exceptional Traps 6. Nested Classes Inner Classes Limited-Scope Inner Classes Static Nested Classes Double Nested Classes Nested Classes in Interfaces? Nested Interfaces Nested Class Rules 7. All About Constants Substitution Constants Bit Fields Option Constants Constant Objects Constant Encapsulation 8. Data Modeling The Requirements Document Natural Language Modeling Aspects of Well-Designed Data Models Reusable Data Constraints Persistence 9. Practical Reflection The Basics Reflection and Greater Reflection Applying Reflection to MutableObject Performance of Reflection Reflection + JUnit = Stable Code 10. Proxies What Is a Proxy? Two Kinds of Proxies Proxy Gotchas 11. References in Four Flavors The Problem Java Reference Concepts The Java Reference Classes Practical Applications A Weak Listener When to Use References 12. Tiger: JDK 1.5 New Language Features Generics Other Improvements in Tiger Index