Java Classmate 0.9 released -- getting ready for 1.0
UPDATE: (October 2013) -- Version 1.0 is now out!
----
Getting close to Java Classmate 1.0: version 0.9 now out!
Java Classmate is a highly specialized library that can be used to properly and completely resolve type information about Java generic types used in field and method signatures. This is information that is not, oddly enough, easily accessible via JDK -- if you try figure out, for example, what is actual return type for method 'IntegerProcessor.foo()' below:
public class MyStringKeyMap<V> extends Map<String,V> { } public class Processor<T> { public T foo(); } public class IntegerProcessor extends Processor<MyStringKeyMap<Integer>> { }
you are in for quite a ride. As a programmer, you should be able to
figure out that it is equivalent to Map<String,Integer>.
But dynamically, from your code, how would you figure it out? I won't
bother you with all the complications: for more background feel free to
read "Why
'java.lang.reflect.Type' does not cut it".
And my suggested
solution is Java Classmate, as per "Use
Java Classmate for resolving generic signatures".
Last change to test
Java Classmate library has been used by quite a few frameworks, such as Hibernate and JBoss, and considered for inclusion by others (Netty uses code adopted from JCM, to avoid adding external dependencies; Jackson uses "predecessor", and this is code from which JVM was originally built). There hasn't been much activity for past 12 months; no new bug reports, and things appear to Just Work, which is great.
So at this point version 0.9 is released, and I am hoping to get some last piece of feedback before releasing the "official" 1.0 version. Please let me know of any issues; the best way is via project's Github issue tracker.