> For the complete documentation index, see [llms.txt](https://eric3wade.gitbook.io/java/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://eric3wade.gitbook.io/java/learning-the-java-language.md).

# Learning the Java Language

- [Object-Oriented Programming Concepts](https://eric3wade.gitbook.io/java/learning-the-java-language/oop-concepts.md)
- [What Is an Object?](https://eric3wade.gitbook.io/java/learning-the-java-language/oop-concepts/what-is-an-object.md)
- [What Is a Class?](https://eric3wade.gitbook.io/java/learning-the-java-language/oop-concepts/what-is-a-class.md)
- [What Is Inheritance?](https://eric3wade.gitbook.io/java/learning-the-java-language/oop-concepts/what-is-inheritance.md)
- [What Is an Interface?](https://eric3wade.gitbook.io/java/learning-the-java-language/oop-concepts/what-is-an-interface.md)
- [What Is a package?](https://eric3wade.gitbook.io/java/learning-the-java-language/oop-concepts/what-is-a-package.md)
- [Language Basics](https://eric3wade.gitbook.io/java/learning-the-java-language/language-basics.md)
- [Java Language Keywords](https://eric3wade.gitbook.io/java/learning-the-java-language/language-basics/java-language-keywords.md)
- [Annotations](https://eric3wade.gitbook.io/java/learning-the-java-language/annotations.md)
- [Annotations Basics](https://eric3wade.gitbook.io/java/learning-the-java-language/annotations/annotations-basics.md)
- [Declaring an Annotation Type](https://eric3wade.gitbook.io/java/learning-the-java-language/annotations/declaring-an-annotation-type.md)
- [Predefined Annotation Types](https://eric3wade.gitbook.io/java/learning-the-java-language/annotations/predefined-annotation-types.md)
- [Repeating Annotations](https://eric3wade.gitbook.io/java/learning-the-java-language/annotations/repeating-annotations.md)
- [Type Annotations and Pluggable Type Systems](https://eric3wade.gitbook.io/java/learning-the-java-language/annotations/type-annotations-and-pluggable-type-systems.md)
- [Generics](https://eric3wade.gitbook.io/java/learning-the-java-language/generics.md)
- [Why Use Generics?](https://eric3wade.gitbook.io/java/learning-the-java-language/generics/why-use-generics.md)
- [Generic Types](https://eric3wade.gitbook.io/java/learning-the-java-language/generics/generic-types.md)
- [Raw Types](https://eric3wade.gitbook.io/java/learning-the-java-language/generics/generic-types/raw-types.md)
- [Generic Methods](https://eric3wade.gitbook.io/java/learning-the-java-language/generics/generic-methods.md)
- [Bounded Type Parameters](https://eric3wade.gitbook.io/java/learning-the-java-language/generics/bounded-type-parameters.md)
- [Generic Methods and Bounded Type Parameters](https://eric3wade.gitbook.io/java/learning-the-java-language/generics/bounded-type-parameters/generic-methods-and-bounded-type-parameters.md)
- [Generics, Inheritance, and Subtypes](https://eric3wade.gitbook.io/java/learning-the-java-language/generics/generics-inheritance-and-subtypes.md)
- [Type Inference](https://eric3wade.gitbook.io/java/learning-the-java-language/generics/type-inference.md)
- [Wildcards](https://eric3wade.gitbook.io/java/learning-the-java-language/generics/wildcards.md)
- [Upper Bounded Wildcards](https://eric3wade.gitbook.io/java/learning-the-java-language/generics/wildcards/upper-bounded-wildcards.md)
- [Unbounded Wildcards](https://eric3wade.gitbook.io/java/learning-the-java-language/generics/wildcards/unbounded-wildcards.md)
- [Lower Bounded Wildcards](https://eric3wade.gitbook.io/java/learning-the-java-language/generics/wildcards/lower-bounded-wildcards.md)
- [Wildcards and Subtyping](https://eric3wade.gitbook.io/java/learning-the-java-language/generics/wildcards/wildcards-and-subtyping.md)
- [Wildcard Capture and Helper Methods](https://eric3wade.gitbook.io/java/learning-the-java-language/generics/wildcards/wildcard-capture-and-helper-methods.md)
- [Guidelines for Wildcard Use](https://eric3wade.gitbook.io/java/learning-the-java-language/generics/wildcards/guidelines-for-wildcard-use.md)
- [Type Erasure](https://eric3wade.gitbook.io/java/learning-the-java-language/generics/type-erasure.md)
- [Erasure of Generic Types](https://eric3wade.gitbook.io/java/learning-the-java-language/generics/type-erasure/erasure-of-generic-types.md)
- [Erasure of Generic Methods](https://eric3wade.gitbook.io/java/learning-the-java-language/generics/type-erasure/erasure-of-generic-methods.md)
- [Effects of Type Erasure and Bridge Methods](https://eric3wade.gitbook.io/java/learning-the-java-language/generics/type-erasure/effects-of-type-erasure-and-bridge-methods.md)
- [Non-Reifiable Types](https://eric3wade.gitbook.io/java/learning-the-java-language/generics/type-erasure/non-reifiable-types.md)
- [Restrictions on Generics](https://eric3wade.gitbook.io/java/learning-the-java-language/generics/restrictions-on-generics.md)
