public class MultiType extends Type
Type
instances are merged, if they share more than one super type (either an
interface or a superclass), then a MultiType is used to
represent the possible super types. The goal of a MultiType
is to reduce the set of possible types down to a single resolved type. This
is done by eliminating non-assignable types from the typeset when the
MultiType is passed as an argument to
Type.isAssignableFrom(Type), as well as removing non-intersecting
types during a merge.
Note: Currently the MultiType instance is reused as much
as possible so that updates are visible from all frames. In addition, all
MultiType merge paths are also updated. This is somewhat
hackish, but it appears to handle most scenarios.| Constructor and Description |
|---|
MultiType(Map interfaces) |
MultiType(Map interfaces,
Type potentialClass) |
| Modifier and Type | Method and Description |
|---|---|
boolean |
equals(Object o) |
Type |
getComponent()
Always returns null since this type is never used for an array.
|
CtClass |
getCtClass()
Gets the class that corresponds with this type.
|
int |
getSize()
Always returns 1, since this type is a reference.
|
boolean |
isArray()
Always reutnrs false since this type is never used for an array
|
boolean |
isAssignableFrom(Type type)
Determines whether this type is assignable, to the passed type.
|
boolean |
isAssignableTo(Type type) |
boolean |
isReference()
Always returns true, since this type is always a reference.
|
Type |
merge(Type type)
Finds the common base type, or interface which both this and the specified
type can be assigned.
|
String |
toString() |
get, getDimensions, isSpecialpublic MultiType(Map interfaces)
public CtClass getCtClass()
getCtClass in class Typepublic Type getComponent()
getComponent in class Typepublic int getSize()
public boolean isArray()
public boolean isAssignableFrom(Type type)
TypeisAssignableFrom in class Typetype - the type to test assignability topublic boolean isAssignableTo(Type type)
public boolean isReference()
isReference in class Typepublic Type merge(Type type)
TypeMultiType,
or a MultiArrayType is returned. Multi-types have special rules,
and successive merges and assignment tests on them will alter their internal state,
as well as other multi-types they have been merged with. This method is used by
the data-flow analyzer to merge the type state from multiple branches.Copyright © 2016 Shigeru Chiba, www.javassist.org. All Rights Reserved.