This is the mail archive of the
java@gcc.gnu.org
mailing list for the Java project.
Generic Signatures
- From: Andrew Haley <aph at redhat dot com>
- To: classpath at gnu dot org, java at gcc dot gnu dot org
- Date: Fri, 3 Nov 2006 19:19:01 +0000
- Subject: Generic Signatures
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.