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 de.fub.bytecode.generic.Type
getArgumentTypes, getMethodSignature, getReturnType, getSignature, getSize, getType, getType, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ReferenceType

protected ReferenceType(byte t,
                        java.lang.String s)
Method Detail

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".