final class ArrayType extends ReferenceType
Represents an array type.
Comparing ArrayType
s
To facilitate comparisons of (array) types, each array type is represented
at any given time, by exactly one instance of ArrayType
.
General Information
From the JVM specification
An array type consists of a component type with a single dimension (whose length is not given by the type). The component type of an array type may itself be an array type. If, starting from any array type, one considers its component type, and then (if that is also an array type) the component type of that type, and so on, eventually one must reach a component type that is not an array type; this is called the element type of the array type. The element type of an array type is necessarily either a primitive type, or a class type, or an interface type.
- Source
- Type.scala
- Alphabetic
- By Inheritance
- ArrayType
- ReferenceType
- FieldType
- Type
- Ordered
- Comparable
- UIDValue
- UID
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- def <(other: Type): Boolean
- Definition Classes
- Type → Ordered
- def <=(other: Type): Boolean
- Definition Classes
- Type → Ordered
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def >(other: Type): Boolean
- Definition Classes
- Type → Ordered
- def >=(other: Type): Boolean
- Definition Classes
- Type → Ordered
- def adapt[T](targetType: Type)(implicit typeConversionFactory: TypeConversionFactory[T]): T
Returns the sequence of instructions that adapts values of
this
type to values of the target type. - def asArrayType: ArrayType
- def asBaseType: BaseType
- Definition Classes
- Type
- Annotations
- @throws("if this type is not a base type")
- def asBooleanType: BooleanType
- Definition Classes
- Type
- Annotations
- @throws("if this is not a boolean type")
- final def asFieldType: ArrayType.this.type
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def asIntLikeType: IntLikeType
- Definition Classes
- Type
- Annotations
- @throws("if this is not an int like type")
- def asNumericType: NumericType
- Definition Classes
- Type
- Annotations
- @throws("if this is not a numeric type")
- def asObjectType: ObjectType
- Definition Classes
- Type
- Annotations
- @throws("if this type is not an object type")
- final def asReferenceType: ReferenceType
- Definition Classes
- ReferenceType → Type
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native() @IntrinsicCandidate()
- def compare(that: Type): Int
Compares this type with the given type.
Compares this type with the given type.
Comparison of types is implemented by comparing the associated ids. I.e., the result of the comparison of two types is not stable across multiple runs of OPAL.
- Definition Classes
- Type → Ordered
- def compareTo(that: Type): Int
- Definition Classes
- Ordered → Comparable
- val componentType: FieldType
- final def computationalType: ComputationalType
The computational type of values of this type.
The computational type of values of this type.
- Definition Classes
- ReferenceType → Type
- def dimensions: Int
The number of dimensions of this array.
The number of dimensions of this array. E.g. "Object[]" has one dimension and "Object[][]" has two dimensions.
- def drop(dimensions: Int): FieldType
Returns the component type of this array type after dropping the given number of dimensions.
Returns the component type of this array type after dropping the given number of dimensions. E.g., if dimensions is
0
this
is returned; if it is1
, then this array type's component type is returned. If the value is larger than1
, then thecomponentType
has to be an array type anddrop(dimensions-1)
will be called on that type.- dimensions
The number of dimensions to drop. This values has to be equal or smaller than the number of dimensions of this array.
- def elementType: FieldType
Returns this array type's element type.
Returns this array type's element type. E.g., the element type of an array of arrays of arrays of
int
isint
. - final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def equals(that: UID): Boolean
- Definition Classes
- UIDValue
- final def equals(other: Any): Boolean
Two objects with a unique id are considered equal if they have the same unique id; all other properties will be ignored!
Two objects with a unique id are considered equal if they have the same unique id; all other properties will be ignored!
- Definition Classes
- UIDValue → AnyRef → Any
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
- final def hashCode(): Int
The unique id.
The unique id.
- Definition Classes
- UIDValue → AnyRef → Any
- val id: Int
Each reference type is associated with a unique id.
Each reference type is associated with a unique id. Object types get ids >= 0 and array types get ids < 0.
- Definition Classes
- ArrayType → ReferenceType → Type → UID
- def isArrayType: Boolean
- def isBaseType: Boolean
Returns
true
if this type is a base type (also called primitive type).Returns
true
if this type is a base type (also called primitive type).- Definition Classes
- Type
- def isBooleanType: Boolean
Returns
true
if this type is the primitive typeboolean
.Returns
true
if this type is the primitive typeboolean
.- Definition Classes
- Type
- def isByteType: Boolean
Returns
true
if this type is the primitive typebyte
.Returns
true
if this type is the primitive typebyte
.- Definition Classes
- Type
- def isCharType: Boolean
Returns
true
if this type is the primitive typechar
(Range: [0..65535]).Returns
true
if this type is the primitive typechar
(Range: [0..65535]).- Definition Classes
- Type
- def isDoubleType: Boolean
Returns
true
if this type is the primitive typedouble
.Returns
true
if this type is the primitive typedouble
.- Definition Classes
- Type
- final def isFieldType: Boolean
Returns
true
if this type can be used by fields. - def isFloatType: Boolean
Returns
true
if this type is the primitive typefloat
.Returns
true
if this type is the primitive typefloat
.- Definition Classes
- Type
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def isIntLikeType: Boolean
- Definition Classes
- Type
- def isIntegerType: Boolean
Returns
true
if this type is the primitive typeint
.Returns
true
if this type is the primitive typeint
.- Definition Classes
- Type
- def isLongType: Boolean
Returns
true
if this type is the primitive typelong
.Returns
true
if this type is the primitive typelong
.- Definition Classes
- Type
- def isNumericType: Boolean
- Definition Classes
- Type
- def isObjectType: Boolean
- Definition Classes
- Type
- final def isReferenceType: Boolean
Returns
true
if this type is a reference type; that is, an array type or an object type (class/interface type).Returns
true
if this type is a reference type; that is, an array type or an object type (class/interface type).- Definition Classes
- ReferenceType → Type
- Note
In general, we can distinguish the following three categories of types:
- base types,
- reference types,
- the type void.
- def isShortType: Boolean
Returns
true
if this type is the primitive typeshort
.Returns
true
if this type is the primitive typeshort
.- Definition Classes
- Type
- def isVoidType: Boolean
Returns
true
if this type representsvoid
;false
otherwise.Returns
true
if this type representsvoid
;false
otherwise.- Definition Classes
- Type
- def mostPreciseObjectType: ObjectType
Returns the most precise object type that represents this reference type.
Returns the most precise object type that represents this reference type. In case of an
ArrayType
, theObjectType
ofjava.lang.Object
is returned; other the currentObjectType
.- Definition Classes
- ArrayType → ReferenceType
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
- final def operandSize: Int
The number of operand stack slots/registers required to store a single value of this type.
The number of operand stack slots/registers required to store a single value of this type. In case of
VoidType
0
is returned.- Definition Classes
- ReferenceType → Type
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toBinaryJavaName: String
Returns the binary name of this type as used by the Java runtime.
- def toJVMTypeName: String
Returns the representation of this type as used by the JVM in, for example, method descriptors or signatures.
- def toJava: String
A String representation of this type as it would be used in Java source code.
- def toJavaClass: Class[_]
Returns the Java class object representing this type.
Returns the Java class object representing this type.
This is generally only useful in very special cases and – to be meaningful at all – it is necessary that the class path used for running the static analysis also contains the classes that are analyzed. This is (often) only the case for the JDK.
However, one example where this is useful is the creation of a real object of a specific type and to use that object when a method is called on that object. This avoids the reimplementation of the respective logic as part of the analysis. For example, if you want to get the
String
that is created by a specificStringBuffer
it is possible to implement the API of StringBuffer as part of your analysis or (probably more efficient) to just create an instance of aStringBuffer
object and to redirect every call to the real object. In this case only some general logic is required to redirect calls and to convert the values between the representation used by the analysis and the representation required by the called method. - def toString(): String
- Definition Classes
- ArrayType → AnyRef → Any
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
Deprecated Value Members
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable]) @Deprecated
- Deprecated