java refection in action
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 dynamically 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 programs.