On 4 May 2009, at 14:17, Thomas Müller wrote:
Hi,
I would like to use Java 1.5 features now in Jackrabbit. I hope this
will improve reliability, simplify maintenance, and reduce source code
size. Unfortunately using generics is sometimes quite verbose.
Example:
HashMap wspInfos = new HashMap();
becomes
HashMap<String, WorkspaceInfo> wspInfos = new HashMap<String,
WorkspaceInfo>();
Part of that could be avoided using a helper class:
HashMap<String, WorkspaceInfo> wspInfos = New.hashMap();
I propose to add a new 'generics generator class' called 'New' to
jackrabbit-jcr-commons. It would contain constructor methods for the
most commonly used collection objects.
public class New {
public static <K, V> HashMap<K, V> hashMap() {
return new HashMap<K, V>();
}
public static <T> ArrayList<T> arrayList() {
return new ArrayList<T>();
}
public static <T> WeakReference<T> weakReference(T t) {
return new WeakReference<T>(t);
}
...
}
What do you think? Are there better solutions?
Regards,
Thomas
Unfortunately Commons Collections isn't generics aware (yet), if it
was, it would have this built in.
I Shindig, where I am a committer, we are using Google Collections
which does know about generics.
It also has some fast immutable implementations.
and a variety of linked, ordered, sorted maps, sets etc
That decision was probably influenced by the high proportion of
googlers on the team, but it has made the code base simpler and has
clearly differentiated between writable and non writable collections.
When using it also clear what the intent was.
see
Although its at 1.0 RC1, its running in production most of those who
have taken shindig into production. eg hi5, Ning, myspace, google etc.
here was the discussion:
http://markmail.org/message/6upaypfupo2lwbnd#query:shindig%20%22google
%20collections%22%20shindig-dev+page:1+mid:fnvrwggqkqvrzu4c+state:results
http://code.google.com/p/google-collections/
Ian