@Exported public interface ReferenceType extends Type, Comparable<ReferenceType>, Accessible
ClassType for classes,
 InterfaceType for interfaces, and
 ArrayType for arrays.
 Note that primitive classes (for example, the
 reflected type of
 Integer.TYPE)
 are represented as ClassType.
 The VM creates Class objects for all three, so from the VM perspective,
 each ReferenceType maps to a distinct Class object.
 
 ReferenceTypes can
 be obtained by querying a particular ObjectReference for its
 type or by getting a list of all reference types from the
 VirtualMachine.
 
ReferenceType provides access to static type information such as methods and fields and provides access to dynamic type information such as the corresponding Class object and the classloader.
 Any method on ReferenceType which directly or
 indirectly takes ReferenceType as an parameter may throw
 VMDisconnectedException if the target VM is
 disconnected and the VMDisconnectEvent has been or is
 available to be read from the EventQueue.
 
 Any method on ReferenceType which directly or
 indirectly takes ReferenceType as an parameter may throw
 VMOutOfMemoryException if the target VM has run out of memory.
 
 Any method on ReferenceType or which directly or indirectly takes
 ReferenceType as parameter may throw
 ObjectCollectedException if the mirrored type has been unloaded.
ObjectReference, 
ObjectReference.referenceType(), 
VirtualMachine, 
VirtualMachine.allClasses()| Modifier and Type | Method and Description | 
|---|---|
| List<Field> | allFields()Returns a list containing each  Fielddeclared in this type,
 and its superclasses, implemented interfaces, and/or superinterfaces. | 
| List<Location> | allLineLocations()Returns a list containing a  Locationobject
 for each executable source line in this reference type. | 
| List<Location> | allLineLocations(String stratum,
                String sourceName)Returns a list containing a  Locationobject
 for each executable source line in this reference type. | 
| List<Method> | allMethods()Returns a list containing each  Methoddeclared in this type,
 and its superclasses, implemented interfaces, and/or superinterfaces. | 
| List<String> | availableStrata()Return the available strata for this reference type. | 
| ClassLoaderReference | classLoader()Gets the classloader object which loaded the class corresponding
 to this type. | 
| ClassObjectReference | classObject()Returns the class object that corresponds to this type in the
 target VM. | 
| byte[] | constantPool()Returns the raw bytes of the constant pool in the format of the
 constant_pool item of the Class File Format in the Java Virtual
 Machine Specification. | 
| int | constantPoolCount()Returns the number of entries in the constant pool plus one. | 
| String | defaultStratum()Returns the default stratum for this reference type. | 
| boolean | equals(Object obj)Compares the specified Object with this ReferenceType for equality. | 
| boolean | failedToInitialize()Determines if initialization failed for this class. | 
| Field | fieldByName(String fieldName)Finds the visible  Fieldwith the given
 non-ambiguous name. | 
| List<Field> | fields()Returns a list containing each  Fielddeclared in this type. | 
| String | genericSignature()Gets the generic signature for this type if there is one. | 
| Value | getValue(Field field) | 
| Map<Field,Value> | getValues(List<? extends Field> fields) | 
| int | hashCode()Returns the hash code value for this ObjectReference. | 
| List<ObjectReference> | instances(long maxInstances)Returns instances of this ReferenceType. | 
| boolean | isAbstract()Determines if this type was declared abstract. | 
| boolean | isFinal()Determines if this type was declared final. | 
| boolean | isInitialized()Determines if this type has been initialized. | 
| boolean | isPrepared()Determines if this type has been prepared. | 
| boolean | isStatic()Determines if this type was declared static. | 
| boolean | isVerified()Determines if this type has been verified. | 
| List<Location> | locationsOfLine(int lineNumber)Returns a List containing all  Locationobjects
 that map to the given line number. | 
| List<Location> | locationsOfLine(String stratum,
               String sourceName,
               int lineNumber)Returns a List containing all  Locationobjects
 that map to the given line number. | 
| int | majorVersion()Returns the class major version number, as defined in the class file format
 of the Java Virtual Machine Specification. | 
| List<Method> | methods()Returns a list containing each  Methoddeclared
 directly in this type. | 
| List<Method> | methodsByName(String name)Returns a List containing each visible  Methodthat
 has the given name. | 
| List<Method> | methodsByName(String name,
             String signature)Returns a List containing each visible  Methodthat
 has the given name and signature. | 
| int | minorVersion()Returns the class minor version number, as defined in the class file format
 of the Java Virtual Machine Specification. | 
| String | name()Gets the fully qualified name of this type. | 
| List<ReferenceType> | nestedTypes()Returns a List containing  ReferenceTypeobjects that are
 declared within this type and are currently loaded into the Virtual
 Machine. | 
| String | sourceDebugExtension()Get the source debug extension of this type. | 
| String | sourceName()Gets an identifying name for the source corresponding to the
 declaration of this type. | 
| List<String> | sourceNames(String stratum)Gets the identifying names for all the source corresponding to the
 declaration of this type. | 
| List<String> | sourcePaths(String stratum)Gets the paths to the source corresponding to the
 declaration of this type. | 
| List<Field> | visibleFields()Returns a list containing each unhidden and unambiguous  Fieldin this type. | 
| List<Method> | visibleMethods()Returns a list containing each  Methoddeclared or inherited by this type. | 
toString, virtualMachinecompareToisPackagePrivate, isPrivate, isProtected, isPublic, modifiersString name()
 For primitive classes
 the returned name is the name of the corresponding primitive
 type; for example, "int" is returned as the name of the class
 represented by Integer.TYPE.
String genericSignature()
null
 if there is no generic signature.ClassLoaderReference classLoader()
ClassLoaderReference which mirrors the classloader,
 or null if the class was loaded through the bootstrap class
 loader.String sourceName() throws AbsentInformationException
 The returned name is dependent on VM's default stratum
 (VirtualMachine.getDefaultStratum()).
 In the reference implementation, when using the base stratum,
 the returned string is the
 unqualified name of the source file containing the declaration
 of this type.  In other strata the returned source name is
 the first source name for that stratum.  Since other languages
 may have more than one source name for a reference type,
 the use of Location.sourceName() or
 sourceNames(String) is preferred.
 
 For arrays (ArrayType) and primitive classes,
 AbsentInformationException is always thrown.
AbsentInformationException - if the source name is not
 knownList<String> sourceNames(String stratum) throws AbsentInformationException
 The returned names are for the specified stratum
 (see Location for a description of strata).
 In the reference implementation, when using the Java
 programming language stratum,
 the returned List contains one element: a String which is the
 unqualified name of the source file containing the declaration
 of this type.  In other strata the returned source names are
 all the source names defined for that stratum.
stratum - The stratum to retrieve information from
 or null for the declaring type's
 default stratum.AbsentInformationException - if the source names are not
 known.
 
 For arrays (ArrayType) and primitive classes,
 AbsentInformationException is always thrown.
List<String> sourcePaths(String stratum) throws AbsentInformationException
 The returned paths are for the specified stratum
 (see Location for a description of strata).
 In the reference implementation, for strata which
 do not explicitly specify source path (the Java
 programming language stratum never does), the returned
 strings are the sourceNames(String) prefixed by
 the package name of this ReferenceType
 converted to a platform dependent path.
 For example, on a Windows platform,
 java.lang.Thread
 would return a List containing one element:
 "java\lang\Thread.java".
stratum - The stratum to retrieve information from
 or null for the declaring type's
 default stratum.AbsentInformationException - if the source names are not
 known.
 
 For arrays (ArrayType) and primitive classes,
 AbsentInformationException is always thrown.
String sourceDebugExtension() throws AbsentInformationException
 Not all target virtual machines support this operation.
 Use
 canGetSourceDebugExtension()
 to determine if the operation is supported.
AbsentInformationException - if the extension is not
 specifiedUnsupportedOperationException - if
 the target virtual machine does not support this
 operation - see
 canGetSourceDebugExtension(),boolean isStatic()
false is returned
 for any package-level type, array type, or primitive class.true if this type is static; false otherwise.boolean isAbstract()
 For arrays (ArrayType) and primitive classes,
 the return value is undefined.
true if this type is abstract; false otherwise.boolean isFinal()
 For arrays (ArrayType) and primitive classes,
 the return value is always true.
true if this type is final; false otherwise.boolean isPrepared()
 For arrays (ArrayType) and primitive classes,
 the return value is undefined.
true if this type is prepared; false otherwise.boolean isVerified()
 For arrays (ArrayType) and primitive classes,
 the return value is undefined.
true if this type is verified; false otherwise.boolean isInitialized()
InterfaceType, this method always returns the
 same value as isPrepared().
 
 For arrays (ArrayType) and primitive classes,
 the return value is undefined.
true if this type is initialized; false otherwise.boolean failedToInitialize()
 For arrays (ArrayType) and primitive classes,
 the return value is undefined.
true if initialization was attempted and
 failed; false otherwise.List<Field> fields()
Field declared in this type.
 Inherited fields are not included. Any synthetic fields created
 by the compiler are included in the list.
 
 For arrays (ArrayType) and primitive classes, the returned
 list is always empty.
Field objects; the list has length 0
 if no fields exist.ClassNotPreparedException - if this class not yet been
 prepared.List<Field> visibleFields()
Field
 in this type.
 Each field that can be accessed from the class
 or its instances with its simple name is included. Fields that
 are ambiguously multiply inherited or fields that are hidden by
 fields with the same name in a more recently inherited class
 cannot be accessed
 by their simple names and are not included in the returned
 list. All other inherited fields are included.
 See JLS section 8.3 for details.
 
 For arrays (ArrayType) and primitive classes, the returned
 list is always empty.
Field objects; the list has length
 0 if no visible fields exist.ClassNotPreparedException - if this class not yet been
 prepared.List<Field> allFields()
Field declared in this type,
 and its superclasses, implemented interfaces, and/or superinterfaces.
 All declared and inherited
 fields are included, regardless of whether they are hidden or
 multiply inherited.
 
 For arrays (ArrayType) and primitive classes, the returned
 list is always empty.
Field objects; the list has length
 0 if no fields exist.ClassNotPreparedException - if this class not yet been
 prepared.Field fieldByName(String fieldName)
Field with the given
 non-ambiguous name. This method follows the
 inheritance rules specified in the JLS (8.3.3) to determine
 visibility.
 
 For arrays (ArrayType) and primitive classes, the returned
 value is always null.
fieldName - a String containing the name of desired field.Field object which mirrors the found field, or
 null if there is no field with the given name or if the given
 name is ambiguous.ClassNotPreparedException - if this class not yet been
 prepared.List<Method> methods()
Method declared
 directly in this type.
 Inherited methods are not included. Constructors,
 the initialization method if any, and any synthetic methods created
 by the compiler are included in the list.
 
 For arrays (ArrayType) and primitive classes, the returned
 list is always empty.
Method objects; the list has length 0
 if no methods exist.ClassNotPreparedException - if this class not yet been
 prepared.List<Method> visibleMethods()
Method
 declared or inherited by this type. Methods from superclasses
 or superinterfaces that that have been hidden or overridden
 are not included.
 
 Note that despite this exclusion, multiple inherited methods
 with the same signature can be present in the returned list, but
 at most one can be a member of a ClassType.
 See JLS section 8.4.6 for details.
 
 For arrays (ArrayType) and primitive classes, the returned
 list is always empty.
Method objects; the list has length
 0 if no visible methods exist.ClassNotPreparedException - if this class not yet been
 prepared.List<Method> allMethods()
Method declared in this type,
 and its superclasses, implemented interfaces, and/or superinterfaces.
 All declared and inherited
 methods are included, regardless of whether they are hidden or
 overridden.
 
 For arrays (ArrayType) and primitive classes, the returned
 list is always empty.
Method objects; the list has length
 0 if no methods exist.ClassNotPreparedException - if this class not yet been
 prepared.List<Method> methodsByName(String name)
Method that
 has the given name.  This is most commonly used to
 find overloaded methods.
 Overridden and hidden methods are not included. See JLS (8.4.6) for details.
 For arrays (ArrayType) and primitive classes, the returned
 list is always empty.
name - the name of the method to find.Method objects that match the given
 name; the list has length 0 if no matching methods are found.ClassNotPreparedException - if this class not yet been
 prepared.List<Method> methodsByName(String name, String signature)
Method that
 has the given name and signature.
 The signature string is the
 JNI signature for the target method:
 ()V
 ([Ljava/lang/String;)V
 (IIII)Z
 
 At most one method in the list is a concrete method and a
 component of ClassType; any other methods in the list
 are abstract. Use ClassType.concreteMethodByName(java.lang.String, java.lang.String) to
 retrieve only the matching concrete method.
 
 For arrays (ArrayType) and primitive classes, the returned
 list is always empty.
name - the name of the method to find.signature - the signature of the method to findMethod objects that match the given
 name and signature; the list has length 0 if no matching methods
 are found.ClassNotPreparedException - if this class not yet been
 prepared.List<ReferenceType> nestedTypes()
ReferenceType objects that are
 declared within this type and are currently loaded into the Virtual
 Machine.  Both static nested types and non-static nested
 types (that is, inner types) are included. Local inner types
 (declared within a code block somewhere in this reference type) are
 also included in the returned list.
 
 For arrays (ArrayType) and primitive classes, the returned
 list is always empty.
ReferenceType objects; the list
 has 0 length if there are no nested types.Value getValue(Field field)
Value of a given static Field in this type.
 The Field must be valid for this type;
 that is, it must be declared in this type, a superclass, a
 superinterface, or an implemented interface.field - the field containing the requested valueValue of the instance field.IllegalArgumentException - if the field is not valid for
 this object's class.Map<Field,Value> getValues(List<? extends Field> fields)
Value of each
 static Field in the given list.
 The Fields must be valid for this type;
 that is, they must be declared in this type, a superclass, a
 superinterface, or an implemented interface.fields - a list of Field objects containing the
 requested values.Field objects with
 their Value.IllegalArgumentException - if any field is not valid for
 this object's class.VMMismatchException - if a Mirror argument and this mirror
 do not belong to the same VirtualMachine.ClassObjectReference classObject()
ClassObjectReference for this reference type
 in the target VM.List<Location> allLineLocations() throws AbsentInformationException
Location object
 for each executable source line in this reference type.
 
 This method is equivalent to
 allLineLocations(vm.getDefaultStratum(),null) -
 see allLineLocations(String,String)
 for more information.
AbsentInformationException - if there is no line
 number information for this class and there are non-native,
 non-abstract executable members of this class.ClassNotPreparedException - if this class not yet
 been prepared.List<Location> allLineLocations(String stratum, String sourceName) throws AbsentInformationException
Location object
 for each executable source line in this reference type.
 Each location maps a source line to a range of code
 indices.
 The beginning of the range can be determined through
 Location.codeIndex().  The returned list may contain
 multiple locations for a particular line number, if the
 compiler and/or VM has mapped that line to two or more
 disjoint code index ranges.  Note that it is possible for
 the same source line to represent different code index
 ranges in different methods.
 
 For arrays (ArrayType) and primitive classes, the
 returned list is always empty.  For interfaces (InterfaceType), the returned list will be non-empty only
 if the interface has executable code in its class
 initialization.
 
 Returned list is for the specified stratum
 (see Location for a description of strata).
stratum - The stratum to retrieve information from
 or null for the defaultStratum().sourceName - Return locations only within this
 source file or null to return locations.Location objects.AbsentInformationException - if there is no line
 number information for this class and there are non-native,
 non-abstract executable members of this class.
 Or if sourceName is non-null
 and source name information is not present.ClassNotPreparedException - if this class not yet
 been prepared.List<Location> locationsOfLine(int lineNumber) throws AbsentInformationException
Location objects
 that map to the given line number.
 
 This method is equivalent to
 locationsOfLine(vm.getDefaultStratum(), null,
 lineNumber) -
 see locationsOfLine(java.lang.String,java.lang.String,int)
 for more information.
lineNumber - the line numberLocation objects that map to
 the given line.AbsentInformationException - if there is no line
 number information for this class.ClassNotPreparedException - if this class not yet
 been prepared.VirtualMachine.getDefaultStratum()List<Location> locationsOfLine(String stratum, String sourceName, int lineNumber) throws AbsentInformationException
Location objects
 that map to the given line number.
 
 For arrays (ArrayType) and primitive classes, the
 returned list is always empty.
 For interfaces (InterfaceType), the returned list
 will be non-empty only if the interface has executable code
 in its class initialization at the specified line number.
 An empty list will be returned if there is no executable
 code at the specified line number.
 
 Returned list is for the specified stratum
 (see Location for a description of strata).
stratum - the stratum to use for comparing line number
                and source name, or null to
                use the defaultStratum().sourceName - the source name containing the line
                   number, or null to match
                   all source nameslineNumber - the line numberLocation objects that map
         to the given line.AbsentInformationException - if there is no line
         number information for this class.
         Or if sourceName is non-null
         and source name information is not present.ClassNotPreparedException - if this class not yet
         been prepared.List<String> availableStrata()
 See the Location for a description of strata.
java.lang.String, each
 representing a stratumString defaultStratum()
"Java") will be returned.
 
 See the Location for a description of strata.
List<ObjectReference> instances(long maxInstances)
 Not all target virtual machines support this operation.
 Use VirtualMachine.canGetInstanceInfo()
 to determine if the operation is supported.
maxInstances - the maximum number of instances to return.
        Must be non-negative.  If zero, all instances are returned.ObjectReference objects.  If there are
 no instances of this ReferenceType, a zero-length list is returned.UnsupportedOperationException - if
 the target virtual machine does not support this
 operation - see
 canGetInstanceInfo()IllegalArgumentException - if maxInstances is less
         than zero.VirtualMachine.instanceCounts(List), 
ObjectReference.referringObjects(long)boolean equals(Object obj)
equals in class Objectobj - the reference object with which to compare.ReferenceType, if the
 ReferenceTypes belong to the same VM, and if they mirror classes
 which correspond to the same instance of java.lang.Class in that VM.Object.hashCode(), 
HashMapint hashCode()
hashCode in class ObjectObject.equals(java.lang.Object), 
System.identityHashCode(java.lang.Object)int majorVersion()
ArrayType) and primitive classes,
 the returned major version number value is zero.
 Not all target virtual machines support this operation.
 Use VirtualMachine.canGetClassFileVersion()
 to determine if the operation is supported.UnsupportedOperationException - if
 the target virtual machine does not support this
 operation - see
 canGetClassFileVersion()int minorVersion()
ArrayType) and primitive classes,
 the returned minor version number value is zero.
 Not all target virtual machines support this operation.
 Use VirtualMachine.canGetClassFileVersion()
 to determine if the operation is supported.UnsupportedOperationException - if
 the target virtual machine does not support this
 operation - see
 canGetClassFileVersion()int constantPoolCount()
ArrayType) and primitive classes,
 the returned constant pool count value is zero.
 Not all target virtual machines support this operation.
 Use VirtualMachine.canGetConstantPool()
 to determine if the operation is supported.UnsupportedOperationException - if
 the target virtual machine does not support this
 operation - see
 canGetConstantPool()constantPool()byte[] constantPool()
ArrayType) and primitive classes,
 a zero length byte array is returned.
 Not all target virtual machines support this operation.
 Use VirtualMachine.canGetConstantPool()
 to determine if the operation is supported.UnsupportedOperationException - if
 the target virtual machine does not support this
 operation - see
 canGetConstantPool()constantPoolCount()
 Copyright © 1999, 2025, Oracle and/or its affiliates.  All rights reserved.