FEST-Reflect 0.3: Java Reflection Simplified
FEST-Reflect is a Java library that provides a Fluent Interface-based API that simplifies the usage of Java Reflection, resulting in improved readability and type safety. It supports access to constructors, methods and fields.
We are proud to announce that FEST-Reflect 0.3 is out!
Although I heard/read many times that reflection is "evil" (whatever that means,) I still think reflection can be useful in certain cases. For example, in FEST-Swing, there are a couple of special cases where we don't have enough platform-related information to simulate user input on a Swing component. Our last resource is to access the UI delegate of such component (e.g.JTree) using reflection to achieve our goal.
As any tool, reflection has its uses. The "evil" part, IMHO, comes from abuse.
The following example compares FEST-Reflect with plain reflection. Let's start by defining the class Names:
class Names {
private final List<String> names = new ArrayList<String>();
String get(int index) {
return names.get(index);
}
}
The following code listing shows how to call the method "get" using reflection:
Method method = Names.class.getMethod("get", int.class);
AccessController.doPrivileged(new PrivilegedAction<Void>() {
public Void run() {
method.setAccessible(true);
return null;
}
});
String name = (String) method.invoke(names, 8);
The same example using FEST-Reflect:
String name = method("get").withReturnType(String.class)
.withParameterTypes(int.class)
.in(names)
.invoke(8);
You can download the latest release here (file fest-reflect-0.3.zip.) FEST-Assert requires Java SE 5.0 or later.
Here are some useful links:
Feedback is always appreciated :)
Alex Ruiz is a Software Engineer in the development tools organization at Oracle. Alex enjoys reading anything related to Java, testing, OOP, and AOP and has programming as his first love. Before joining Oracle, Alex was a consultant for ThoughtWorks. Alex is a DZone MVB and is not an employee of DZone and has posted 20 posts at DZone. You can read more from them at their website.
- Login or register to post comments
- 2739 reads
- Printer-friendly version
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)










Comments
Andy DePue replied on Fri, 2008/02/01 - 11:21am
This looks interesting... I wonder what performance is like?
Alex Ruiz replied on Fri, 2008/02/01 - 11:57pm
Hi Andy,
We haven't done any performance testing on this API yet. We create a couple of "intermediate" objects to hold state in the fluent interface. My guess is, if there is any negative performance impact, it would be negligible. We'll do some performance testing for our next version.
Best regards,
-Alex.
kardelen133 replied on Thu, 2008/07/03 - 3:18am
nice posting.
nakliyatÂ