Sergei,
Hi. Sun has
a refection tutorial. I haven't read it, but I believe it's fine.
My book encourages you to use reflection only in a limited form that avoids most of its disadvantages (Item 35, "Prefer interfaces to reflection"). Briefly, I believe that reflection should generally be used only to instantiate objects, which can then be accessed via the interface(s) they implement. The advantages of this approach are: compile-time type safety, cleanliness, and performance. Sometimes you need the full power of reflective access, but often you don't.
------------------
Joshua Bloch
Author of
Effective Java