Re: Class<T> question
James Childers <[email protected]>
| Newsgroups | gmane.comp.windows.devel.java.advanced |
|---|---|
| Message-ID | <[email protected]> |
On Dec 5, 2007, at 9:48 AM, Attila Szegedi wrote: > In my recent wrestling with "genericizing" a codebase that was > originally pre-Java 5, I'd suggest you try replacing "Class" with > "Class<?>". > > Alternatively, disable compiler warning for generics. No, seriously. > Honestly, my feeling is that programming with generics causes more > noise in source code than it eliminates. Yeah, it eliminates casts, > but previously I would write: > > Map map = new HashMap(); > ... > String x = (String)map.get(blah); > > Now I write monstrosities such as: > > Map<? extends Object, String> map = new HashMap<Object, String>(); > ... > String x = map.get(blah); > > So, I need to write one cast less, and four type specifiers more. Net > loss in code conciseness. > I guess I'm just getting old and resistant to change. Java generic syntax is notoriously verbose. Neil Gafter recently offered a couple of proposals for a more concise syntax: http://gafter.blogspot.com/2007/07/constructor-type-inference.html From his proposals: map := new HashMap<String,List<Thing>>(); Or alternatively: Map<String,List<Thing>> map = new HashMap<>(); In the former case the assigned type is HashMap, which prevents programming to interfaces. It also introduces a new operator. The second case simply relies upon inference of the proper generic types. -= James =================================== This list is hosted by DevelopMentor® http://www.develop.com View archives and manage your subscription(s) at http://discuss.develop.com