39 |
package java.lang; |
package java.lang; |
40 |
|
|
41 |
import gnu.classpath.VMStackWalker; |
import gnu.classpath.VMStackWalker; |
42 |
|
import gnu.java.lang.reflect.ClassSignatureParser; |
43 |
|
|
44 |
import java.io.InputStream; |
import java.io.InputStream; |
45 |
import java.io.Serializable; |
import java.io.Serializable; |
125 |
final transient Object vmdata; |
final transient Object vmdata; |
126 |
|
|
127 |
/** newInstance() caches the default constructor */ |
/** newInstance() caches the default constructor */ |
128 |
private transient Constructor constructor; |
private transient Constructor<T> constructor; |
129 |
|
|
130 |
/** |
/** |
131 |
* Class is non-instantiable from Java code; only the VM can create |
* Class is non-instantiable from Java code; only the VM can create |
1299 |
*/ |
*/ |
1300 |
public T cast(Object obj) |
public T cast(Object obj) |
1301 |
{ |
{ |
1302 |
return VMClass.cast(obj, this); |
return (T)VMClass.cast(obj, this); |
1303 |
} |
} |
1304 |
|
|
1305 |
/** |
/** |
1369 |
*/ |
*/ |
1370 |
public T[] getEnumConstants() |
public T[] getEnumConstants() |
1371 |
{ |
{ |
1372 |
return VMClass.getEnumConstants(this); |
return (T[])VMClass.getEnumConstants(this); |
1373 |
} |
} |
1374 |
|
|
1375 |
/** |
/** |
1603 |
*/ |
*/ |
1604 |
public Type[] getGenericInterfaces() |
public Type[] getGenericInterfaces() |
1605 |
{ |
{ |
1606 |
return VMClass.getGenericInterfaces(this); |
if (isPrimitive()) |
1607 |
|
return new Type[0]; |
1608 |
|
|
1609 |
|
String sig = VMClass.getClassSignature(this); |
1610 |
|
if (sig == null) |
1611 |
|
return getInterfaces(); |
1612 |
|
|
1613 |
|
ClassSignatureParser p = new ClassSignatureParser(this, sig); |
1614 |
|
return p.getInterfaceTypes(); |
1615 |
} |
} |
1616 |
|
|
1617 |
/** |
/** |
1645 |
*/ |
*/ |
1646 |
public Type getGenericSuperclass() |
public Type getGenericSuperclass() |
1647 |
{ |
{ |
1648 |
return VMClass.getGenericSuperclass(this); |
if (isArray()) |
1649 |
|
return Object.class; |
1650 |
|
|
1651 |
|
if (isPrimitive() || isInterface() || this == Object.class) |
1652 |
|
return null; |
1653 |
|
|
1654 |
|
String sig = VMClass.getClassSignature(this); |
1655 |
|
if (sig == null) |
1656 |
|
return getSuperclass(); |
1657 |
|
|
1658 |
|
ClassSignatureParser p = new ClassSignatureParser(this, sig); |
1659 |
|
return p.getSuperclassType(); |
1660 |
} |
} |
1661 |
|
|
1662 |
/** |
/** |
1673 |
*/ |
*/ |
1674 |
public TypeVariable<Class<T>>[] getTypeParameters() |
public TypeVariable<Class<T>>[] getTypeParameters() |
1675 |
{ |
{ |
1676 |
return VMClass.getTypeParameters(this); |
String sig = VMClass.getClassSignature(this); |
1677 |
|
if (sig == null) |
1678 |
|
return (TypeVariable<Class<T>>[])new TypeVariable[0]; |
1679 |
|
|
1680 |
|
ClassSignatureParser p = new ClassSignatureParser(this, sig); |
1681 |
|
return p.getTypeParameters(); |
1682 |
} |
} |
1683 |
|
|
1684 |
/** |
/** |