org.apache.bcel.generic

Class ReferenceType

Implemented Interfaces:
java.io.Serializable
Known Direct Subclasses:
ArrayType, ObjectType, UninitializedObjectType

public abstract class ReferenceType
extends Type

Super class for object and array types.
Version:
$Id: ReferenceType.java,v 1.5 2002/08/07 18:01:32 mdahm Exp $
Author:
M. Dahm
See Also:
Serialized Form

Field Summary

Fields inherited from class org.apache.bcel.generic.Type

BOOLEAN, BYTE, CHAR, DOUBLE, FLOAT, INT, LONG, NO_ARGS, NULL, OBJECT, SHORT, STRING, STRINGBUFFER, THROWABLE, UNKNOWN, VOID, signature, type

Constructor Summary

ReferenceType(byte t, String s)

Method Summary

ReferenceType
firstCommonSuperclass(ReferenceType t)
Deprecated. use getFirstCommonSuperclass(ReferenceType t) which has slightly changed semantics.
ReferenceType
getFirstCommonSuperclass(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 org.apache.bcel.generic.Type

getArgumentTypes, getMethodSignature, getReturnType, getSignature, getSignature, getSize, getType, getType, getType, toString

Constructor Details

ReferenceType

protected ReferenceType(byte t,
                        String s)

Method Details

firstCommonSuperclass

public ReferenceType firstCommonSuperclass(ReferenceType t)

Deprecated. use getFirstCommonSuperclass(ReferenceType t) which has slightly changed semantics.

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

getFirstCommonSuperclass

public ReferenceType getFirstCommonSuperclass(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; unless their dimensions match. Then an ArrayType of the same number of dimensions is returned, with its basic type being the first common super class of the basic types of "this" and t. 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".

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.

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.