public abstract class IClassLoader extends Object
IClass
by type name.Constructor and Description |
---|
IClassLoader(IClassLoader optionalParentIClassLoader) |
Modifier and Type | Method and Description |
---|---|
static IClassLoader |
createJavacLikePathIClassLoader(File[] optionalBootClassPath,
File[] optionalExtDirs,
File[] classPath)
Create an
IClassLoader that looks for classes in the given "boot class
path", then in the given "extension directories", and then in the given
"class path". |
protected void |
defineIClass(IClass iClass)
Define an
IClass in the context of this IClassLoader . |
protected abstract IClass |
findIClass(String descriptor)
|
IClass |
loadIClass(String fieldDescriptor)
Get an
IClass by field descriptor. |
protected void |
postConstruct()
This method must be called by the constructor of the directly derived
class.
|
public IClass ANNO_java_lang_Override
Override
annotation.public IClass TYPE_java_lang_AssertionError
AssertionError
type.public IClass TYPE_java_lang_Character
Character
type.public IClass TYPE_java_lang_Cloneable
Cloneable
type.public IClass TYPE_java_lang_Exception
Exception
type.public IClass TYPE_java_lang_RuntimeException
RuntimeException
type.public IClass TYPE_java_lang_StringBuilder
StringBuilder
type.public IClass TYPE_java_lang_Throwable
Throwable
type.public IClass TYPE_java_io_Serializable
Serializable
type.public IClass.IMethod METH_java_lang_Iterable__iterator
Iterable.iterator()
method.public IClass.IMethod METH_java_lang_String__concat__java_lang_String
String.concat(String)
method.public IClass.IMethod METH_java_lang_String__valueOf__int
String.valueOf(int)
method.public IClass.IMethod METH_java_lang_String__valueOf__long
String.valueOf(long)
method.public IClass.IMethod METH_java_lang_String__valueOf__float
String.valueOf(float)
method.public IClass.IMethod METH_java_lang_String__valueOf__double
String.valueOf(double)
method.public IClass.IMethod METH_java_lang_String__valueOf__char
String.valueOf(char)
method.public IClass.IMethod METH_java_lang_String__valueOf__boolean
String.valueOf(boolean)
method.public IClass.IMethod METH_java_lang_String__valueOf__java_lang_Object
String.valueOf(Object)
method.public IClass.IMethod METH_java_lang_StringBuilder__append__java_lang_String
StringBuilder.append(String)
method.public IClass.IMethod METH_java_lang_StringBuilder__toString
StringBuilder.toString()
method.public IClass.IMethod METH_java_util_Iterator__hasNext
Iterator.hasNext()
method.public IClass.IMethod METH_java_util_Iterator__next
Iterator.next()
method.public IClass.IConstructor CTOR_java_lang_StringBuilder__java_lang_String
StringBuilder.StringBuilder(String)
constructor.public IClassLoader(IClassLoader optionalParentIClassLoader)
protected final void postConstruct()
loadIClass(String)
which will not work until the implementing
class is constructed.)public final IClass loadIClass(String fieldDescriptor) throws ClassNotFoundException
IClass
by field descriptor.fieldDescriptor
- E.g. 'Lpkg1/pkg2/Outer$Inner;'null
if an IClass
could not be loadedClassNotFoundException
- An exception was raised while loading the IClass
protected abstract IClass findIClass(String descriptor) throws ClassNotFoundException
IClass
by descriptor; return null
if a class
for that descriptor
could not be found.
Similar ClassLoader.findClass(java.lang.String)
, this method
must
IClass
object from somewhere for the given type
defineIClass(IClass)
with that IClass
object as
the argument
IClass
object
The format of a descriptor
is defined in JVMS 4.3.2. Typical
descriptors are:
I
(Integer)
Lpkg1/pkg2/Cls;
(Class declared in package)
Lpkg1/pkg2/Outer$Inner;
Member class
Notice that this method is never called from more than one thread at a time. In other words, implementations of this method need not be synchronized.
null
if a class with that descriptor could not be foundClassNotFoundException
- if an exception was raised while loading the classprotected final void defineIClass(IClass iClass)
IClass
in the context of this IClassLoader
.
If an IClass
with that descriptor already exists, a
RuntimeException
is thrown.
This method should only be called from an implementation of
findIClass(String)
.
RuntimeException
- A different IClass
object is already defined for this typepublic static IClassLoader createJavacLikePathIClassLoader(File[] optionalBootClassPath, File[] optionalExtDirs, File[] classPath)
IClassLoader
that looks for classes in the given "boot class
path", then in the given "extension directories", and then in the given
"class path".
The default for the optionalBootClassPath
is the path defined in
the system property "sun.boot.class.path", and the default for the
optionalExtensionDirs
is the path defined in the "java.ext.dirs"
system property.
Copyright © 2001–2016. All rights reserved.