Table of contents Introduction Getting Started The Java Technology Phenomenon About the Java Technology What Can Java Technology Do? How Will Java Technology Change My Life? The Hello World Application A Closer Look at the Hello World Application Learning the Java Language Object-Oriented Programming Concepts What Is an Object? What Is a Class? What Is Inheritance? What Is an Interface? What Is a package? Language Basics Java Language Keywords Annotations Annotations Basics Declaring an Annotation Type Predefined Annotation Types Repeating Annotations Type Annotations and Pluggable Type Systems Generics Why Use Generics? Generic Types Raw Types Generic Methods Bounded Type Parameters Generic Methods and Bounded Type Parameters Generics, Inheritance, and Subtypes Type Inference Wildcards Upper Bounded Wildcards Unbounded Wildcards Lower Bounded Wildcards Wildcards and Subtyping Wildcard Capture and Helper Methods Guidelines for Wildcard Use Type Erasure Erasure of Generic Types Erasure of Generic Methods Effects of Type Erasure and Bridge Methods Non-Reifiable Types Restrictions on Generics