public class

ClassTypeImpl

extends ReferenceTypeImpl
implements ClassType
java.lang.Object
   ↳ com.sun.tools.jdi.TypeImpl
     ↳ com.sun.tools.jdi.ReferenceTypeImpl
       ↳ com.sun.tools.jdi.ClassTypeImpl

Summary

[Expand]
Inherited Constants
From interface com.sun.jdi.ClassType
[Expand]
Inherited Fields
From class com.sun.tools.jdi.ReferenceTypeImpl
From class com.sun.tools.jdi.TypeImpl
Protected Constructors
ClassTypeImpl(VirtualMachine aVm, long aRef)
Public Methods
List<InterfaceType> allInterfaces()
Gets the interfaces directly and indirectly implemented by this class.
List<Method> allMethods()
Returns a list containing each Method declared in this type, and its superclasses, implemented interfaces, and/or superinterfaces.
Method concreteMethodByName(String name, String signature)
Returns a the single non-abstract Method visible from this class that has the given name and signature.
List<InterfaceType> interfaces()
Gets the interfaces directly implemented by this class.
Value invokeMethod(ThreadReference threadIntf, Method methodIntf, List<? extends Value> origArguments, int options)
Invokes the specified static Method in the target VM.
boolean isEnum()
Determine if this class was declared as an enum.
ObjectReference newInstance(ThreadReference threadIntf, Method methodIntf, List<? extends Value> origArguments, int options)
Constructs a new instance of this type, using the given constructor Method in the target VM.
void setValue(Field field, Value value)
Assigns a value to a static field.
List<ClassType> subclasses()
Gets the currently loaded, direct subclasses of this class.
ClassType superclass()
Gets the superclass of this class.
String toString()
Returns a string representation of the object.
[Expand]
Inherited Methods
From class com.sun.tools.jdi.ReferenceTypeImpl
From class com.sun.tools.jdi.TypeImpl
From class java.lang.Object
From interface com.sun.jdi.Accessible
From interface com.sun.jdi.ClassType
From interface com.sun.jdi.Mirror
From interface com.sun.jdi.ReferenceType
From interface com.sun.jdi.Type
From interface java.lang.Comparable

Protected Constructors

protected ClassTypeImpl (VirtualMachine aVm, long aRef)

Public Methods

public List<InterfaceType> allInterfaces ()

Gets the interfaces directly and indirectly implemented by this class. Interfaces returned by interfaces() are returned as well all superinterfaces.

Returns
  • a List of InterfaceType objects each mirroring an interface of this ClassType in the target VM. If none exist, returns a zero length List.

public List<Method> allMethods ()

Returns a list containing each 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.

Returns
  • a List of Method objects; the list has length 0 if no methods exist.

public Method concreteMethodByName (String name, String signature)

Returns a the single non-abstract Method visible from this class that has the given name and signature. See methodsByName(java.lang.String, java.lang.String) for information on signature format.

The returned method (if non-null) is a component of ClassType.

Parameters
name the name of the method to find.
signature the signature of the method to find
Returns
  • the Method that matches the given name and signature or null if there is no match.

public List<InterfaceType> interfaces ()

Gets the interfaces directly implemented by this class. Only the interfaces that are declared with the "implements" keyword in this class are included.

Returns
  • a List of InterfaceType objects each mirroring a direct interface this ClassType in the target VM. If none exist, returns a zero length List.

public Value invokeMethod (ThreadReference threadIntf, Method methodIntf, List<? extends Value> origArguments, int options)

Invokes the specified static Method in the target VM. The specified method can be defined in this class, or in a superclass. The method must be a static method but not a static initializer. Use newInstance(ThreadReference, Method, List, int) to create a new object and run its constructor.

The method invocation will occur in the specified thread. Method invocation can occur only if the specified thread has been suspended by an event which occurred in that thread. Method invocation is not supported when the target VM has been suspended through suspend() or when the specified thread is suspended through suspend().

The specified method is invoked with the arguments in the specified argument list. The method invocation is synchronous; this method does not return until the invoked method returns in the target VM. If the invoked method throws an exception, this method will throw an InvocationException which contains a mirror to the exception object thrown.

Object arguments must be assignment compatible with the argument type (This implies that the argument type must be loaded through the enclosing class's class loader). Primitive arguments must be either assignment compatible with the argument type or must be convertible to the argument type without loss of information. If the method being called accepts a variable number of arguments, then the last argument type is an array of some component type. The argument in the matching position can be omitted, or can be null, an array of the same component type, or an argument of the component type followed by any number of other arguments of the same type. If the argument is omitted, then a 0 length array of the component type is passed. The component type can be a primitive type. Autoboxing is not supported. See the Java Language Specification. section 5.2 for more information on assignment compatibility.

By default, all threads in the target VM are resumed while the method is being invoked if they were previously suspended by an event or by suspend() or suspend(). This is done to prevent the deadlocks that will occur if any of the threads own monitors that will be needed by the invoked method. Note, however, that this implicit resume acts exactly like resume(), so if the thread's suspend count is greater than 1, it will remain in a suspended state during the invocation and thus a deadlock could still occur. By default, when the invocation completes, all threads in the target VM are suspended, regardless their state before the invocation. It is possible that breakpoints or other events might occur during the invocation. This can cause deadlocks as described above. It can also cause a deadlock if invokeMethod is called from the client's event handler thread. In this case, this thread will be waiting for the invokeMethod to complete and won't read the EventSet that comes in for the new event. If this new EventSet is SUSPEND_ALL, then a deadlock will occur because no one will resume the EventSet. To avoid this, all EventRequests should be disabled before doing the invokeMethod, or the invokeMethod should not be done from the client's event handler thread.

The resumption of other threads during the invocation can be prevented by specifying the INVOKE_SINGLE_THREADED bit flag in the options argument; however, there is no protection against or recovery from the deadlocks described above, so this option should be used with great caution. Only the specified thread will be resumed (as described for all threads above). Upon completion of a single threaded invoke, the invoking thread will be suspended once again. Note that any threads started during the single threaded invocation will not be suspended when the invocation completes.

If the target VM is disconnected during the invoke (for example, through dispose()) the method invocation continues.

Parameters
threadIntf the thread in which to invoke.
methodIntf the Method to invoke.
origArguments the list of Value arguments bound to the invoked method. Values from the list are assigned to arguments in the order they appear in the method signature.
options the integer bit flag options.
Returns
  • a Value mirror of the invoked method's return value.

public boolean isEnum ()

Determine if this class was declared as an enum.

Returns
  • true if this class was declared as an enum; false otherwise.

public ObjectReference newInstance (ThreadReference threadIntf, Method methodIntf, List<? extends Value> origArguments, int options)

Constructs a new instance of this type, using the given constructor Method in the target VM. The specified constructor must be defined in this class.

Instance creation will occur in the specified thread. Instance creation can occur only if the specified thread has been suspended by an event which occurred in that thread. Instance creation is not supported when the target VM has been suspended through suspend() or when the specified thread is suspended through suspend().

The specified constructor is invoked with the arguments in the specified argument list. The invocation is synchronous; this method does not return until the constructor returns in the target VM. If the invoked method throws an exception, this method will throw an InvocationException which contains a mirror to the exception object thrown.

Object arguments must be assignment compatible with the argument type (This implies that the argument type must be loaded through the enclosing class's class loader). Primitive arguments must be either assignment compatible with the argument type or must be convertible to the argument type without loss of information. If the method being called accepts a variable number of arguments, then the last argument type is an array of some component type. The argument in the matching position can be omitted, or can be null, an array of the same component type, or an argument of the component type, followed by any number of other arguments of the same type. If the argument is omitted, then a 0 length array of the component type is passed. The component type can be a primitive type. Autoboxing is not supported. See the Java Language Specification. section 5.2 for more information on assignment compatibility.

By default, all threads in the target VM are resumed while the method is being invoked if they were previously suspended by an event or by suspend() or suspend(). This is done to prevent the deadlocks that will occur if any of the threads own monitors that will be needed by the invoked method. It is possible that breakpoints or other events might occur during the invocation. Note, however, that this implicit resume acts exactly like resume(), so if the thread's suspend count is greater than 1, it will remain in a suspended state during the invocation. By default, when the invocation completes, all threads in the target VM are suspended, regardless their state before the invocation.

The resumption of other threads during the invocation can be prevented by specifying the INVOKE_SINGLE_THREADED bit flag in the options argument; however, there is no protection against or recovery from the deadlocks described above, so this option should be used with great caution. Only the specified thread will be resumed (as described for all threads above). Upon completion of a single threaded invoke, the invoking thread will be suspended once again. Note that any threads started during the single threaded invocation will not be suspended when the invocation completes.

If the target VM is disconnected during the invoke (for example, through dispose()) the method invocation continues.

Parameters
threadIntf the thread in which to invoke.
methodIntf the constructor Method to invoke.
origArguments the list of Value arguments bound to the invoked constructor. Values from the list are assigned to arguments in the order they appear in the constructor signature.
options the integer bit flag options.
Returns

public void setValue (Field field, Value value)

Assigns a value to a static field. The Field must be valid for this ClassType; that is, it must be from the mirrored object's class or a superclass of that class. The field must not be final.

Object values must be assignment compatible with the field type (This implies that the field type must be loaded through the enclosing class's class loader). Primitive values must be either assignment compatible with the field type or must be convertible to the field type without loss of information. See JLS section 5.2 for more information on assignment compatibility.

Parameters
field the field to set.
value the value to be assigned.

public List<ClassType> subclasses ()

Gets the currently loaded, direct subclasses of this class. No ordering of this list is guaranteed.

Returns
  • a List of ClassType objects each mirroring a loaded subclass of this class in the target VM. If no such classes exist, this method returns a zero-length list.

public ClassType superclass ()

Gets the superclass of this class.

Returns
  • a ClassType that mirrors the superclass of this class in the target VM. If no such class exists, returns null

public String toString ()

Returns a string representation of the object. In general, the toString method returns a string that "textually represents" this object. The result should be a concise but informative representation that is easy for a person to read. It is recommended that all subclasses override this method.

The toString method for class Object returns a string consisting of the name of the class of which the object is an instance, the at-sign character `@', and the unsigned hexadecimal representation of the hash code of the object. In other words, this method returns a string equal to the value of:

 getClass().getName() + '@' + Integer.toHexString(hashCode())
 

Returns
  • a string representation of the object.