Class ClassResolver


  • public class ClassResolver
    extends java.lang.Object
    Utility class to resolve a class name to an actual class. Note that loaded classes are not initialized.

    Limitations: this does not handle inner classes very well.

    • Constructor Summary

      Constructors 
      Constructor Description
      ClassResolver​(java.lang.ClassLoader loader, java.lang.String pkg, java.util.Set<java.lang.String> imports)
      Creates a new ClassResolver instance.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean isLoadable​(java.lang.String name)
      Checks if the given class name can be loaded.
      java.lang.Class<?> resolve​(java.lang.String name, java.lang.String currentClass)
      Attempts to resolve the Class for a specified name.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • ClassResolver

        public ClassResolver​(java.lang.ClassLoader loader,
                             java.lang.String pkg,
                             java.util.Set<java.lang.String> imports)
        Creates a new ClassResolver instance.
        Parameters:
        loader - the ClassLoader to load classes with.
        pkg - the name of the package the class may belong to
        imports - set of imports to check if the class belongs to
    • Method Detail

      • resolve

        public java.lang.Class<?> resolve​(java.lang.String name,
                                          java.lang.String currentClass)
                                   throws java.lang.ClassNotFoundException
        Attempts to resolve the Class for a specified name. The algorithm is to check: - fully qualified name - explicit imports - enclosing package - star imports
        Parameters:
        name - name of the class to resolve
        currentClass - name of current class (for inner classes).
        Returns:
        the resolved class
        Throws:
        java.lang.ClassNotFoundException - if unable to resolve the class
      • isLoadable

        public boolean isLoadable​(java.lang.String name)
        Checks if the given class name can be loaded.
        Parameters:
        name - name of the class to check
        Returns:
        whether a specified class is loadable with safeLoad().