< prev index next >
src/java.instrument/share/classes/java/lang/instrument/Instrumentation.java
Print this page
rev 58874 : imported patch svc-spec-update
*** 386,408 ****
isModifiableClass(Class<?> theClass);
/**
* Returns an array of all classes currently loaded by the JVM.
*
* @return an array containing all the classes loaded by the JVM, zero-length if there are none
*/
@SuppressWarnings("rawtypes")
Class[]
getAllLoadedClasses();
/**
! * Returns an array of all classes for which <code>loader</code> is an initiating loader.
! * If the supplied loader is <code>null</code>, classes initiated by the bootstrap class
! * loader are returned.
*
* @param loader the loader whose initiated class list will be returned
! * @return an array containing all the classes for which loader is an initiating loader,
* zero-length if there are none
*/
@SuppressWarnings("rawtypes")
Class[]
getInitiatedClasses(ClassLoader loader);
--- 386,448 ----
isModifiableClass(Class<?> theClass);
/**
* Returns an array of all classes currently loaded by the JVM.
*
+ * <p>
+ * A class or interface creation can be triggered by one of the following:
+ * <ul>
+ * <li>by loading and deriving a class from a {@code class} file representation
+ * using class loader (see JVMS {@jvms 5.3}).
+ * <li>by invoking {@link java.lang.invoke.MethodHandles.Lookup#defineHiddenClass(byte[], boolean, java.lang.invoke.MethodHandles.Lookup.ClassOption...)
+ * Lookup::defineHiddenClass} that creates a {@link Class#isHidden
+ * hidden class or interface} from a {@code class} file representation.
+ * <li>by invoking methods in certain reflection APIs such as
+ * {@link Class#forName(String) Class::forName}.
+ * </ul>
+ * <p>
+ * An array class is created directly by Java virtual machine. An array
+ * class creation can be triggered by using class loaders or by invoking
+ * methods in certain reflection APIs such as
+ * {@link java.lang.reflect.Array#newInstance(Class, int) Array::newInstance}
+ * and {@link Class#arrayType() Class::arrayType}.
+ * <p>
+ * The returned array includes all classes and interfaces, including
+ * {@link Class#isHidden hidden classes or interfaces}, and array classes
+ * of all types.
+ *
* @return an array containing all the classes loaded by the JVM, zero-length if there are none
*/
@SuppressWarnings("rawtypes")
Class[]
getAllLoadedClasses();
/**
! * Returns an array of all classes which {@code loader} can find by name
! * via {@link ClassLoader#loadClass(String, boolean) ClassLoader::loadClass},
! * {@link Class#forName(String) Class::forName} and bytecode linkage.
! * That is, {@code loader} has been recorded as an initiating loader
! * of these classes. If the supplied {@code loader} is {@code null},
! * classes that the bootstrap class loader can find by name are returned.
! *
! * <p>
! * The returned array does not include {@link Class#isHidden()
! * <em>hidden</em>} classes or interfaces that are created by the invocation of
! * {@link java.lang.invoke.MethodHandles.Lookup#defineHiddenClass(byte[], boolean, java.lang.invoke.MethodHandles.Lookup.ClassOption...)
! * Lookup::defineHiddenClass} because:
! * <ul>
! * <li>A hidden class or interface cannot be referenced by the constant pools
! * of other classes and interfaces.
! * <li>A hidden class or interface cannot be discovered by any class loader.
! * </ul>
! * In addition, the returned array does not include array classes whose
! * {@linkplain Class#componentType() element type} is a
! * {@link Class#isHidden() hidden class or interface} as they cannot
! * be discovered by {@code loader}.
*
* @param loader the loader whose initiated class list will be returned
! * @return an array containing all classes which {@code loader} can find by name;
* zero-length if there are none
*/
@SuppressWarnings("rawtypes")
Class[]
getInitiatedClasses(ClassLoader loader);
< prev index next >