Issue518758
Created on 2002-02-17.14:38:51 by francisd, last changed 2005-02-28.05:40:00 by bzimmer.
File name |
Uploaded |
Description |
Edit |
Remove |
ForNameTest.java
|
francisd,
2002-02-17.14:38:54
|
ForNameTest.java |
|
|
msg578 (view) |
Author: Francis Devereux (francisd) |
Date: 2002-02-17.14:38:51 |
|
The object resulting from cl =
java.lang.Class.forName('java.lang.Class') should be an
instance of java.lang.Class and therefore have the
methods and properties of java.lang.Class. For
example, cl.name should be 'java.lang.Class'. However,
cl.name causes an AttributeError:
>>> import java.lang
>>> cl = java.lang.Class.forName('java.lang.Class')
>>> cl.name
Traceback (innermost last):
File "<console>", line 1, in ?
AttributeError: instance attr: name
>>> cl.getName()
Traceback (innermost last):
File "<console>", line 1, in ?
TypeError: getName(): expected 1 args; got 0
>>> cl.methods
Traceback (innermost last):
File "<console>", line 1, in ?
AttributeError: instance attr: methods
>>>
java.lang.Class.forName() works OK for other classes
though, for example:
>>> import java.lang
>>> al = java.lang.Class.forName('java.util.ArrayList')
>>> al.name
'java.util.ArrayList'
>>> al.getName()
'java.util.ArrayList'
>>> al.methods
array([public final native void
java.lang.Object.wait(long) throws
java.lang.InterruptedException, public final void
java.lang.Object.wait(long,int) throws
java.lang.InterruptedException, public final void
java.lang.Object.wait() throws
java.lang.InterruptedException, public final native
java.lang.Class java.lang.Object.getClass(), public
final native void java.lang.Object.notify(), public
final native void java.lang.Object.notifyAll(), public
java.lang.String
java.util.AbstractCollection.toString(), public boolean
java.util.AbstractCollection.remove(java.lang.Object),
public boolean
java.util.AbstractCollection.containsAll(java.util.Collection),
public boolean
java.util.AbstractCollection.removeAll(java.util.Collection),
public boolean
java.util.AbstractCollection.retainAll(java.util.Collection),
public int java.util.AbstractList.hashCode(), public
boolean
java.util.AbstractList.equals(java.lang.Object), public
java.util.Iterator java.util.AbstractList.iterator(),
public java.util.List
java.util.AbstractList.subList(int,int), public
java.util.ListIterator
java.util.AbstractList.listIterator(), public
java.util.ListIterator
java.util.AbstractList.listIterator(int), public
java.lang.Object java.util.ArrayList.clone(), public
int java.util.ArrayList.indexOf(java.lang.Object),
public int
java.util.ArrayList.lastIndexOf(java.lang.Object),
public java.lang.Object java.util.ArrayList.get(int),
public java.lang.Object
java.util.ArrayList.set(int,java.lang.Object), public
boolean java.util.ArrayList.add(java.lang.Object),
public void
java.util.ArrayList.add(int,java.lang.Object), public
int java.util.ArrayList.size(), public
java.lang.Object[] java.util.ArrayList.toArray(),
public java.lang.Object[]
java.util.ArrayList.toArray(java.lang.Object[]), public
boolean java.util.ArrayList.contains(java.lang.Object),
public void java.util.ArrayList.clear(), public
java.lang.Object java.util.ArrayList.remove(int),
public boolean java.util.ArrayList.isEmpty(), public
void java.util.ArrayList.trimToSize(), public void
java.util.ArrayList.ensureCapacity(int), public boolean
java.util.ArrayList.addAll(java.util.Collection),
public boolean
java.util.ArrayList.addAll(int,java.util.Collection)],
java.lang.reflect.Method)
>>>
Also, using Class.forName("java.lang.Class") works OK
in plain java - see attached ForNameTest.java
[francis@gecko java]$ java ForNameTest
cl.getName() = java.lang.Class
cl.getMethods() = [Ljava.lang.reflect.Method;@6ec612
[francis@gecko java]$
So it seems that jython is getting confused when it has
an instance of java.lang.Class for java.lang.Class
itself.
I am using jython 2.1 (final), and have tested on Sun
JDK 1.3.1 on Linux 2.4.14 and Sun JDK 1.3.0 on Windows
2000 SP2
|
msg579 (view) |
Author: Brian Zimmer (bzimmer) |
Date: 2005-02-28.05:40:00 |
|
Logged In: YES
user_id=37674
I cannot reproduce this with the current CVS build.
|
|
Date |
User |
Action |
Args |
2002-02-17 14:38:51 | francisd | create | |
|