Chapter 2. The Type System

If I had to pick a single best part of the Java programming language, it would be the type system. Like many other parts of the language, there is nothing new to the type system. Every object is an instance of a type, and those types are determined by the class of the object and the interfaces that the class implements. An object actually is an instance of many types (hence the notion of a polymorphic type system). This polymorphic aspect of objects allows many of the patterns that have become so popular to work, as we can write code that uses the properties of objects of one type and then manipulate objects that are at least of that type (but may also be an instance of some other type). After working with the Java language for more than a decade, we tend to take the type system for granted, or worse yet, notice it only when it gets in the way. But if we think about it, the type system in Java is a paradigmatic example of what makes the language what it is—a pragmatic combination of features that provide an excellent tool for software engineers building large, complex systems.

The Basics

The basics of the type system are simple to explain (which by itself is a positive feature). Every object in a Java program is an instance of a class. The class defines the internal data layout for the object and defines a set of methods that can be called on the object. The class also associates code with each of these methods, allowing that code to manipulate the data ...

Get Java: The Good Parts now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.