public class MultiTypedReferenceValue extends ReferenceValue
TypedReferenceValue can have multiple potential types during runtime.
E.g. when evaluating SuperClass s = someFlag ? new A() : new B(),
s may be of type A or B.| Modifier and Type | Field and Description |
|---|---|
boolean |
mayBeUnknown |
ALWAYS, MAYBE, NEVER, TYPE_DOUBLE, TYPE_FLOAT, TYPE_INSTRUCTION_OFFSET, TYPE_INTEGER, TYPE_LONG, TYPE_REFERENCE, TYPE_TOP| Constructor and Description |
|---|
MultiTypedReferenceValue(java.util.Set<TypedReferenceValue> potentialTypes,
boolean mayBeUnknown) |
MultiTypedReferenceValue(TypedReferenceValue type,
boolean mayBeUnknown) |
| Modifier and Type | Method and Description |
|---|---|
ReferenceValue |
cast(java.lang.String type,
Clazz referencedClass,
ValueFactory valueFactory,
boolean alwaysCast)
Returns this ReferenceValue, cast to the given type.
|
int |
equal(MultiTypedReferenceValue other)
Returns whether this
ReferenceValue is equal to the given other
MultiTypedReferenceValue. |
int |
equal(ReferenceValue other)
Returns whether this ReferenceValue is equal to the given other
ReferenceValue.
|
boolean |
equals(java.lang.Object o) |
ReferenceValue |
generalize(MultiTypedReferenceValue other)
Returns the generalization of this
ReferenceValue and the given other
MultiTypedReferenceValue. |
ReferenceValue |
generalize(ReferenceValue other)
Returns the generalization of this ReferenceValue and the given other
ReferenceValue.
|
ReferenceValue |
generalize(TypedReferenceValue other)
Returns the generalization of this ReferenceValue and the given other
TypedReferenceValue.
|
ReferenceValue |
generalize(UnknownReferenceValue other)
Returns the generalization of this ReferenceValue and the given other
UnknownReferenceValue.
|
TypedReferenceValue |
getGeneralizedType() |
java.util.Set<TypedReferenceValue> |
getPotentialTypes() |
Clazz |
getReferencedClass()
Returns the class that is referenced by the type.
|
java.lang.String |
getType()
Returns the type.
|
int |
hashCode() |
int |
instanceOf(java.lang.String otherType,
Clazz otherReferencedClass)
Returns whether the type is an instance of the given type.
|
java.lang.String |
internalType()
Returns the internal type of this Value.
|
int |
isNull()
Returns whether this ReferenceValue is
null. |
boolean |
mayBeExtension()
Returns whether the actual type of this ReferenceValue may be an
extension of its type.
|
java.lang.String |
toString() |
arrayLength, arrayStore, computationalType, doubleArrayLoad, equal, equal, equal, equal, equal, equal, equal, equal, floatArrayLoad, generalize, generalize, generalize, generalize, generalize, generalize, generalize, integerArrayLoad, isNotNull, longArrayLoad, notEqual, referenceArrayLoad, referenceValue, valuecategory1Value, isCategory2category2Value, doubleValue, floatValue, instructionOffsetValue, integerValue, isParticular, isSpecific, longValuepublic MultiTypedReferenceValue(java.util.Set<TypedReferenceValue> potentialTypes, boolean mayBeUnknown)
public MultiTypedReferenceValue(TypedReferenceValue type, boolean mayBeUnknown)
public java.util.Set<TypedReferenceValue> getPotentialTypes()
public TypedReferenceValue getGeneralizedType()
public java.lang.String getType()
ReferenceValuegetType in class ReferenceValuepublic Clazz getReferencedClass()
ReferenceValuegetReferencedClass in class ReferenceValuepublic boolean mayBeExtension()
ReferenceValuemayBeExtension in class ReferenceValuepublic int isNull()
ReferenceValuenull.isNull in class ReferenceValueNEVER, MAYBE, or ALWAYS.public int instanceOf(java.lang.String otherType,
Clazz otherReferencedClass)
ReferenceValueinstanceOf in class ReferenceValuepublic ReferenceValue cast(java.lang.String type, Clazz referencedClass, ValueFactory valueFactory, boolean alwaysCast)
ReferenceValuecast in class ReferenceValuepublic ReferenceValue generalize(ReferenceValue other)
ReferenceValuegeneralize in class ReferenceValuepublic ReferenceValue generalize(TypedReferenceValue other)
ReferenceValuegeneralize in class ReferenceValuepublic ReferenceValue generalize(UnknownReferenceValue other)
ReferenceValuegeneralize in class ReferenceValuepublic ReferenceValue generalize(MultiTypedReferenceValue other)
ReferenceValueReferenceValue and the given other
MultiTypedReferenceValue.generalize in class ReferenceValuepublic int equal(ReferenceValue other)
ReferenceValueequal in class ReferenceValueNEVER, MAYBE, or ALWAYS.public int equal(MultiTypedReferenceValue other)
ReferenceValueReferenceValue is equal to the given other
MultiTypedReferenceValue.equal in class ReferenceValueNEVER, MAYBE, or ALWAYS.public java.lang.String internalType()
ValueinternalType in class ValueTypeConstants.BOOLEAN,
TypeConstants.BYTE,
TypeConstants.CHAR,
TypeConstants.SHORT,
TypeConstants.INT,
TypeConstants.LONG,
TypeConstants.FLOAT,
TypeConstants.DOUBLE,
TypeConstants.CLASS_START ... TypeConstants.CLASS_END, or
an array type containing any of these types (always as String).public boolean equals(java.lang.Object o)
equals in class ReferenceValuepublic int hashCode()
hashCode in class ReferenceValuepublic java.lang.String toString()
toString in class ReferenceValue