Java Glossary : reflection

CMP home Java glossary home Menu no menu Last updated 2004-06-28 by Roedy Green ©1996-2004 Canadian Mind Products

Java definitions: 0-9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

You are here : home : Java Glossary : R words : reflection.

reflection
Reflection (the java.lang.reflect package) is primarily for very generic programs such as database browsers or visual code editors. Reflection allows Java code to discover information about the fields, methods and constructors of loaded classes and to dynamically invoke them. Reflection is for dealing with class files you know very little about ahead of time. It would be of interest for example to the author of a BeanBox editor to import various foreign beans.

Here is a simple example of how it works:

// The following code dynamically does
// new Dyna().setName("Matt");
// using reflection.
// It is quite a production, and is quite slow.

String methodName = "setName";
String someData = "Matt";
Class dynaclass = Class.forName( "Dyna" );

// method accepts parameters, define the types in order here as Class[]
Class[] classParams = new Class [] { String. class}; // set the method of the class object
Method someMethod = dynaclass.getMethod( methodName , classParams );

// pass values to fill parameters of method
Object[] arguments = new Object [] { someData}; // invoke method via reflection
someMethod.invoke( dynaclass.newInstance(), arguments );

Reflection has very high overhead. Make sure you can't solve your problem with a simple interface, Class.forName and a delegate object instead.

Kataba has a way of speeding up reflection 100x to almost the speed of interface calls via dynamic compliation (JVM byte code generation).

instrospection ¤ JASM if you want to create class files on the fly ¤ Kataba


CMP logo
CMP_home
home
Canadian Mind Products CSS
HTML Checked!
ICRA ratings logo
mindprod.com IP:[24.87.56.253]
Your IP:[80.134.30.163]
You are visitor number 3031.
Please send errors, omissions and suggestions
to improve this page to Roedy Green.
You can get a fresh copy of this page from: or possibly from your local J: drive mirror:
http://mindprod.com/jgloss/reflection.html J:\mindprod\jgloss\reflection.html