Class ClassLoadingStrategy.UsingLookup

  • All Implemented Interfaces:
    ClassLoadingStrategy<java.lang.ClassLoader>
    Enclosing interface:
    ClassLoadingStrategy<T extends java.lang.ClassLoader>

    public static class ClassLoadingStrategy.UsingLookup
    extends java.lang.Object
    implements ClassLoadingStrategy<java.lang.ClassLoader>
    A class loading strategy that uses a java.lang.invoke.MethodHandles$Lookup instance for defining types. A lookup instance can define types only in the same class loader and in the same package as the type within which it was created. The supplied lookup must have package privileges, i.e. it must not be a public lookup.
    • Constructor Detail

      • UsingLookup

        protected UsingLookup​(ClassInjector classInjector,
                              java.lang.ClassLoader classLoader)
        Creates a new class loading strategy that uses a lookup type.
        Parameters:
        classInjector - The class injector to use.
        classLoader - The class loader in the supplied class injector defines classes.
    • Method Detail

      • of

        public static ClassLoadingStrategy<java.lang.ClassLoader> of​(java.lang.Object lookup)
        Creates a new class loading strategy that uses a java.lang.invoke.MethodHandles$Lookup instance.
        Parameters:
        lookup - The lookup instance to use for defining new types.
        Returns:
        A suitable class loading strategy.
      • load

        public java.util.Map<TypeDescription,​java.lang.Class<?>> load​(java.lang.ClassLoader classLoader,
                                                                            java.util.Map<TypeDescription,​byte[]> types)
        Description copied from interface: ClassLoadingStrategy
        Loads a given collection of classes given their binary representation.
        Specified by:
        load in interface ClassLoadingStrategy<java.lang.ClassLoader>
        Parameters:
        classLoader - The class loader to used for loading the classes.
        types - Byte array representations of the types to be loaded mapped by their descriptions, where an iteration order defines an order in which they are supposed to be loaded, if relevant.
        Returns:
        A collection of the loaded classes which will be initialized in the iteration order of the returned collection.