How this book is organized
The ten chapters of this book are organized as follows:
Chapters 1, 2, and 3 introduce the basics of Java reflection: how to access class
objects; how to dynamically examine classes, methods, fields, and constructors;
and how to dynami
cally load classes.
Chapter 4 introduces the first advanced reflective feature: dynamic proxies.
The chapter covers the facilities of the Proxy class and how to use them. There are
several useful examples, including how to add properties to objects and how to
create a test stub generator.
Chapter 5 covers the topic of examining the call stack. This is important for
reflectively solving problems related to what a running program is doing.
Chapter 6 delves into customizing class loaders. This topic is necessary to
reflective programming because some problems require the collection of metadata
that is available only when classes are loaded.
Chapter 7 begins a two-chapter sequence on reflective code generation. This
chapter introduces a framework for class-to-class transformations, a particular
kind of code generator that starts with a compiled class and produces a new compiled
class, which usually has some additional property.
Chapter 8 continues the sequence by using the framework for class-to-class
transformations to support implementation of designs that use patterns.
Chapter 9 presents performance-measurement techniques for making design
decisions among reflective features.
Chapter 10 takes a look at the future of reflection in Java. This includes an
overview of the impact of Java 1.5 on reflective programming, which other production
languages will influence the future of reflection in Java, and the influence
of Aspect-Oriented Programming.
Appendix A is a reprise of the introduction to reflection but with a more academic
point of view. The appendix presents a brief history of reflection and the
terminology that you are likely to encounter when reading advanced papers.
Appendix B explains how to handle compilation errors in the program that
dynamically compiles the “Hello World!” program.
Appendix C summarizes the UML conventions used to diagram reflective