de.fub.bytecode.generic
Class ReferenceType
java.lang.Object
|
+--de.fub.bytecode.generic.Type
|
+--de.fub.bytecode.generic.ReferenceType
- Direct Known Subclasses:
- ArrayType, ObjectType
- public class ReferenceType
- extends Type
Super class for objects and arrays.
- Version:
- $Id: ReferenceType.java,v 1.11 2001/08/21 17:44:13 ehaase Exp $
- Author:
- M. Dahm
Fields inherited from class de.fub.bytecode.generic.Type |
BOOLEAN, BYTE, CHAR, DOUBLE, FLOAT, INT, LONG, NO_ARGS, NULL, OBJECT, SHORT, signature, STRING, STRINGBUFFER, THROWABLE, type, UNKNOWN, VOID |
Constructor Summary |
protected |
ReferenceType(byte t,
java.lang.String s)
|
Method Summary |
ReferenceType |
firstCommonSuperclass(ReferenceType t)
This commutative operation returns the first common superclass (narrowest ReferenceType
referencing a class, not an interface). |
boolean |
isAssignmentCompatibleWith(Type t)
Return true iff this is assignment compatible with another type t
as defined in the JVM specification; see the AASTORE definition
there. |
boolean |
isCastableTo(Type t)
Return true iff this type is castable to another type t as defined in
the JVM specification. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
ReferenceType
protected ReferenceType(byte t,
java.lang.String s)
isCastableTo
public boolean isCastableTo(Type t)
- Return true iff this type is castable to another type t as defined in
the JVM specification. The case where this is Type.NULL is not
defined (see the CHECKCAST definition in the JVM specification).
However, because e.g. CHECKCAST doesn't throw a
ClassCastException when casting a null reference to any Object,
true is returned in this case.
isAssignmentCompatibleWith
public boolean isAssignmentCompatibleWith(Type t)
- Return true iff this is assignment compatible with another type t
as defined in the JVM specification; see the AASTORE definition
there.
firstCommonSuperclass
public ReferenceType firstCommonSuperclass(ReferenceType t)
- This commutative operation returns the first common superclass (narrowest ReferenceType
referencing a class, not an interface).
If one of the types is a superclass of the other, the former is returned.
If "this" is Type.NULL, then t is returned.
If t is Type.NULL, then "this" is returned.
If "this" equals t ['this.equals(t)'] "this" is returned.
If "this" or t is an ArrayType, then Type.OBJECT is returned.
If "this" or t is a ReferenceType referencing an interface, then Type.OBJECT is returned.
If not all of the two classes' superclasses cannot be found, "null" is returned.
See the JVM specification edition 2, "§4.9.2 The Bytecode Verifier".