Date: Sat, 14 Jun 2003 19:26:57 -0400 (EDT) From: C. Scott Ananian To: jsr14-prototype-comments@sun.com Subject: Map.Entry 'loses' parameterization. Compiling this code: package harpoon.Util; import harpoon.Util.Collections.AbstractMapEntry; import java.util.*; public abstract class Default { public static <K,V> Map.Entry<K,V> entry(final K key, final V value) { return new AbstractMapEntry<K,V>() { public K getKey() { return key; } public V getValue() { return value; } }; } } causes these compiler errors: --- /home/cananian/jsr14_adding_generics-2_0-ea/scripts/javac -d . -g Default.java Default.java:31: type java.util.Map.Entry does not take parameters public static <K,V> Map.Entry<K,V> entry(final K key, final V value) { ^ Default.java:34: <anonymous harpoon.Util.Default$1> is not abstract and does not override abstract method setValue(java.lang.Object) in java.util.Map.Entry public V getValue() { return value; } ^ 2 errors --- This "forgetfulness" on the part of the compiler is a *very* common problem when compiling projects using GJ using a dependency-tracking system (such as 'make'): if certain 'magic' classes are not included on the command line as source files (in this example, the AbstractMapEntry class), then the parameterization of library classes will be 'lost' and a slew of error messages will result. The workaround is 'make clean && make', which can be very costly for large projects. Full details are in the attached 'sunbug3.tgz'. This bug has been present in various forms since the 1.0 compiler and is my #1 usability problem with the JSR-14 prototype compiler. This is the single reason why the rest of my research group hates me for switching FLEX over to GJ -- they'd hate me for the other prototype compiler bugs if they did more GJ coding themselves, but 'failure to build' is what they see most. --scott Cocaine Mossad cryptographic AP Castro Dictionary Mk 48 Nazi World Trade Center Yakima Attache Peking genetic supercomputer fissionable for Dummies ( http://cscott.net/ ) [ Part 2, "Bug example" Application/OCTET-STREAM (Name: ] [ "sunbug3.tgz") 3.3KB. ]