Generic Signatures

Andrew Haley aph@redhat.com
Fri Nov 3 19:19:00 GMT 2006


I can't get even simple tests with generic signatures to work. Like
this:
public class test2
{
 static class A extends ArrayList<String> {};
 public static void main(String[] args)
 {
 A a = new A();
 Object x = a;
 ((Collection)x).add(new Byte((byte) 1));
 System.out.println(x.getClass().getGenericSuperclass());
 System.out.println("We have a list parametrized with: " +
 ((ParameterizedType)x.getClass().getGenericSuperclass()).getActualTypeArguments()[0]);
 }
}
should do this:
java.util.ArrayList<java.lang.String>
We have a list parametrized with: class java.lang.String
but does this:
Exception in thread "main" java.lang.TypeNotPresentException: type "java$util$ArrayList" not found
 at gnu.java.lang.reflect.ParameterizedTypeImpl.resolve(GenericSignatureParser.java:127)
 at gnu.java.lang.reflect.TypeImpl.resolve(TypeImpl.java:59)
 at gnu.java.lang.reflect.ClassSignatureParser.getSuperclassType(ClassSignatureParser.java:83)
 at java.lang.Class.getGenericSuperclass(Class.java:1232)
 at test2.main(test2.java:12)
Caused by: java.lang.ClassNotFoundException: java$util$ArrayList not found in gnu.gcj.runtime.SystemClassLoader{urls=[file:./], parent=gnu.gcj.runtime.ExtensionClassLoader{urls=[], parent=null}}
 at java.net.URLClassLoader.findClass(URLClassLoader.java:1081)
 at gnu.gcj.runtime.SystemClassLoader.findClass(natSystemClassLoader.cc:27)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:317)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:260)
 at java.lang.Class.forName(natClass.cc:103)
 at gnu.java.lang.reflect.ParameterizedTypeImpl.resolve(GenericSignatureParser.java:123)
 ...4 more
Is it the case that this stuff hasn't ever worked? I'll allow that we
have an older cut of the generics branch in gcj.
Thanks,
Andrew.


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /