public final class BytecodeGen
extends java.lang.Object
faster reflection
, method
interceptors
and to proxy circular dependencies.
When loading classes, we need to be careful of:
OSGi
use class loader boundaries to
enforce modularity at runtime.
For each generated class, there's multiple class loaders involved:
Modifier and Type | Class and Description |
---|---|
private static class |
BytecodeGen.BridgeClassLoader
Loader for Guice-generated classes.
|
private static class |
BytecodeGen.SystemBridgeHolder |
static class |
BytecodeGen.Visibility
The required visibility of a user's class from a Guice-generated class.
|
Modifier and Type | Field and Description |
---|---|
private static java.lang.String |
CGLIB_PACKAGE |
private static com.google.common.cache.LoadingCache<java.lang.ClassLoader,java.lang.ClassLoader> |
CLASS_LOADER_CACHE
Weak cache of bridge class loaders that make the Guice implementation classes visible to
various code-generated proxies of client classes.
|
(package private) static java.lang.ClassLoader |
GUICE_CLASS_LOADER |
(package private) static java.lang.String |
GUICE_INTERNAL_PACKAGE
ie.
|
(package private) static java.util.logging.Logger |
logger |
Constructor and Description |
---|
BytecodeGen() |
Modifier and Type | Method and Description |
---|---|
private static java.lang.ClassLoader |
canonicalize(java.lang.ClassLoader classLoader)
Attempts to canonicalize null references to the system class loader.
|
static java.lang.ClassLoader |
getClassLoader(java.lang.Class<?> type)
Returns the class loader to host generated classes for
type . |
private static java.lang.ClassLoader |
getClassLoader(java.lang.Class<?> type,
java.lang.ClassLoader delegate) |
static final java.util.logging.Logger logger
static final java.lang.ClassLoader GUICE_CLASS_LOADER
static final java.lang.String GUICE_INTERNAL_PACKAGE
private static final java.lang.String CGLIB_PACKAGE
private static final com.google.common.cache.LoadingCache<java.lang.ClassLoader,java.lang.ClassLoader> CLASS_LOADER_CACHE
private static java.lang.ClassLoader canonicalize(java.lang.ClassLoader classLoader)
public static java.lang.ClassLoader getClassLoader(java.lang.Class<?> type)
type
.private static java.lang.ClassLoader getClassLoader(java.lang.Class<?> type, java.lang.ClassLoader delegate)