Class DefaultJavaType

    • Field Detail

      • name

        protected final java.lang.String name
      • fullName

        protected java.lang.String fullName
    • Method Detail

      • getBinaryName

        public java.lang.String getBinaryName()
        The class or interface must be named by its binary name, which must meet the following constraints:
        • The binary name of a top level type is its canonical name.
        • The binary name of a member type consists of the binary name of its immediately enclosing type, followed by $, followed by the simple name of the member.
        Specified by:
        getBinaryName in interface JavaType
        Returns:
        the binary name
        See Also:
        https://docs.oracle.com/javase/specs/jls/se8/html/jls-13.html#jls-13.1
      • getSimpleName

        public java.lang.String getSimpleName()
        Equivalent of Class.getSimpleName().
        Specified by:
        getSimpleName in interface JavaClass
        Returns:
        the simple name of the underlying class as given in the source code.
      • getFullyQualifiedName

        public java.lang.String getFullyQualifiedName()
        Every primitive type, named package, top level class, and top level interface has a fully qualified name:
        • The fully qualified name of a primitive type is the keyword for that primitive type, namely byte, short, char, int, long, float, double, or boolean.
        • The fully qualified name of a named package that is not a subpackage of a named package is its simple name.
        • The fully qualified name of a named package that is a subpackage of another named package consists of the fully qualified name of the containing package, followed by ".", followed by the simple (member) name of the subpackage.
        • The fully qualified name of a top level class or top level interface that is declared in an unnamed package is the simple name of the class or interface.
        • The fully qualified name of a top level class or top level interface that is declared in a named package consists of the fully qualified name of the package, followed by ".", followed by the simple name of the class or interface.
        Each member class, member interface, and array type may have a fully qualified name:
        • A member class or member interface M of another class or interface C has a fully qualified name if and only if C has a fully qualified name.
        • In that case, the fully qualified name of M consists of the fully qualified name of C, followed by ".", followed by the simple name of M.
        • An array type has a fully qualified name if and only if its element type has a fully qualified name.
        • In that case, the fully qualified name of an array type consists of the fully qualified name of the component type of the array type followed by "[]".
        Some examples how names will be translated
         Object > java.lang.Object
         java.util.List > java.util.List
         ?  > ?
         T  > T
         anypackage.Outer.Inner > anypackage.Outer.Inner
         String[][] > java.lang.String[][]
         
        Specified by:
        getFullyQualifiedName in interface JavaType
        Returns:
        the fully qualified name, never null
        See Also:
        JavaClass.getComponentType(), JavaType.getBinaryName(), https://docs.oracle.com/javase/specs/jls/se8/html/jls-6.html#jls-6.7
      • getComponentType

        public JavaClass getComponentType()
        Equivalent of Class.getComponentType() If this type is an array, return its component type
        Specified by:
        getComponentType in interface JavaClass
        Returns:
        the type of array if it's one, otherwise null
      • getValue

        public java.lang.String getValue()
        If there's a reference to this class, use the value used in the code. Otherwise return the simple name. When including all imports, you should be safe to use this method. This won't return generics, so it's java1.4 safe. Examples:
          private String fieldA;             // getValue() will return "String"
          private java.lang.String fieldA;   // getValue() will return "java.lang.String"
          private List>String> aList;  // getValue() will return "List"
         
        Specified by:
        getValue in interface JavaType
        Returns:
        the name of the class as used in the source
      • getGenericValue

        public java.lang.String getGenericValue()
        A java5+ representation of the class. When including all imports, you should be safe to use this method. Examples:
          private String fieldA;             // getValue() will return "String"
          private java.lang.String fieldA;   // getValue() will return "java.lang.String"
          private List>String> aList;  // getValue() will return "List>String>"
         
        Specified by:
        getGenericValue in interface JavaType
        Returns:
        the generic name of the class as used in the source
      • isResolved

        protected boolean isResolved()
      • isArray

        public boolean isArray()
        Specified by:
        isArray in interface JavaClass
        Returns:
        true if this JavaClass is an array, otherwise false
      • getDimensions

        public int getDimensions()
        Returns the depth of this array, 0 if it's not an array
        Specified by:
        getDimensions in interface JavaClass
        Returns:
        The depth of this array, at least 0
      • toString

        public java.lang.String toString()
        Equivalent of Class.toString(). Converts the object to a string.
        Specified by:
        toString in interface JavaClass
        Overrides:
        toString in class java.lang.Object
        Returns:
        a string representation of this type.
        See Also:
        Class.toString()
      • toGenericString

        public java.lang.String toGenericString()
        Returns getGenericValue() extended with the array information
         Object > java.lang.Object
         Object[] > java.lang.Object[]
         List<Object> > java.lang.List<java.lang.Object>
         Outer.Inner > Outer$Inner
         Outer.Inner<Object>[][] > Outer$Inner<java.lang.Object>[][] 
         
        Specified by:
        toGenericString in interface JavaType
        Returns:
        a generic string representation of this type.
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • isA

        public boolean isA​(JavaType type)
        Parameters:
        type - the type to match with
        Returns:
        true if this type if of type, otherwise false
        Since:
        1.3
      • isPrimitive

        public boolean isPrimitive()
        Equivalent of Class.isPrimitive()
        Specified by:
        isPrimitive in interface JavaClass
        Returns:
        true if this class represents a primitive, otherwise false
      • isVoid

        public boolean isVoid()
        Specified by:
        isVoid in interface JavaClass
        Returns:
        true if this JavaClass is a void, otherwise false
      • resolve

        protected static JavaType resolve​(JavaType base,
                                          JavaClass declaringClass,
                                          JavaClass callingClass)
        Consider the following example
          public abstract class AbstractClass<T> 
          {
            private T value;
            
            public AbstractClass( T value ) { this.value = value; }
            
            public T getValue() { return value; }
          }
          
          public class ConcreteClass extends AbstractClass<String>
          {
            public ConcreteClass( String s ) { super( s ); }
          }
          

        We want to know the resolved returnType when calling ConcreteClass.getValue(). The expected type is String.

        • this would be T
        • declaringClass would be AbstractClass, since that's where T is used
        • callingClass would be ConcreteClass
        Parameters:
        base - the base
        declaringClass - the declaring class
        callingClass - the calling class
        Returns:
        the resolved type
      • getGenericFullyQualifiedName

        public java.lang.String getGenericFullyQualifiedName()
        The fully qualified name with generic information.
        Specified by:
        getGenericFullyQualifiedName in interface JavaType
        Returns:
        the generic fully qualified name
      • getGenericCanonicalName

        public java.lang.String getGenericCanonicalName()
        The canonical name with generic information.
        Specified by:
        getGenericCanonicalName in interface JavaType
        Returns:
        the generic canonical name
      • getSource

        public JavaSource getSource()
        The compilation unit, which includes the imports, the public and anonymous classes
        Specified by:
        getSource in interface JavaClass
        Returns:
        the JavaSource of this element
      • getLineNumber

        public int getLineNumber()
        The line number where this element started
        Specified by:
        getLineNumber in interface JavaModel
        Returns:
        the line number of this element
      • isInterface

        public boolean isInterface()
        (API description of Class.isInterface())

        Determines if the specified Class object represents an interface type.

        Specified by:
        isInterface in interface JavaClass
        Returns:
        true if this object represents an interface, otherwise false
      • isEnum

        public boolean isEnum()
        (API description of Class.isEnum())

        Returns true if and only if this class was declared as an enum in the source code.

        Specified by:
        isEnum in interface JavaClass
        Returns:
        true if this object represents an enum, otherwise false
      • getComment

        public java.lang.String getComment()
        Retrieve the javadoc comment of this annotated element. This is the part between /** and the */, but without the doclet tags
        Specified by:
        getComment in interface JavaAnnotatedElement
        Returns:
        the comment, otherwise null
      • getTags

        public java.util.List<DocletTag> getTags()
        Retrieve all defined doclet tags.
        Specified by:
        getTags in interface JavaAnnotatedElement
        Returns:
        a list of DocletTags, never null
      • isAnnotation

        public boolean isAnnotation()
        (API description of Class.isAnnotation())

        Returns true if this Class object represents an annotation type. Note that if this method returns true, JavaClass.isInterface() would also return true, as all annotation types are also interfaces.

        Specified by:
        isAnnotation in interface JavaClass
        Returns:
        true if this object represents an annotation, otherwise false
      • getTagsByName

        public java.util.List<DocletTag> getTagsByName​(java.lang.String name)
        Retrieve all doclettags with a specific name.
        Specified by:
        getTagsByName in interface JavaAnnotatedElement
        Parameters:
        name - the name of the doclet tag
        Returns:
        a list of doclettags, never null
      • getTagByName

        public DocletTag getTagByName​(java.lang.String name)
        Retrieve the doclettag by the specified name. If there are more than one tags, only return the first one.
        Specified by:
        getTagByName in interface JavaAnnotatedElement
        Parameters:
        name - the name of the doclettag trying to retrieve
        Returns:
        the first doclettag matching the name, otherwise null
      • getInterfaces

        public java.util.List<JavaClass> getInterfaces()
        Equivalent of Class.getInterfaces() Determines the interfaces implemented by the class or interface represented by this object.
        Specified by:
        getInterfaces in interface JavaClass
        Returns:
        a list of interfaces, never null
      • getNamedParameter

        public java.lang.String getNamedParameter​(java.lang.String tagName,
                                                  java.lang.String parameterName)
        Convenience method for getTagByName(String).getNamedParameter(String) that also checks for null tag.
        Specified by:
        getNamedParameter in interface JavaAnnotatedElement
        Parameters:
        tagName - the tag name
        parameterName - the parameter name
        Returns:
        the value of the matching parameter, otherwise null
      • getPackage

        public JavaPackage getPackage()
        Equivalent of Class.getPackage()
        Specified by:
        getPackage in interface JavaClass
        Returns:
        the package
      • getPackageName

        public java.lang.String getPackageName()
        If this class has a package, the packagename will be returned. Otherwise an empty String.
        Specified by:
        getPackageName in interface JavaClass
        Returns:
        the name of the package, otherwise an empty String
      • isInner

        public boolean isInner()
        Specified by:
        isInner in interface JavaClass
        Returns:
        true if this class is an inner class, otherwise false
      • getMethods

        public java.util.List<JavaMethod> getMethods()
        Equivalent of Class.getMethods()
        Specified by:
        getMethods in interface JavaClass
        Returns:
        the methods declared or overridden in this class
      • getConstructors

        public java.util.List<JavaConstructor> getConstructors()
        Equivalent of Class.getConstructors()
        Specified by:
        getConstructors in interface JavaClass
        Returns:
        the list of constructors
      • getConstructor

        public JavaConstructor getConstructor​(java.util.List<JavaType> parameterTypes)
        Specified by:
        getConstructor in interface JavaClass
        Parameters:
        parameterTypes - the parameter types of the constructor, can be null
        Returns:
        the matching constructor, otherwise null
      • getConstructor

        public JavaConstructor getConstructor​(java.util.List<JavaType> parameterTypes,
                                              boolean varArg)
        Specified by:
        getConstructor in interface JavaClass
        Parameters:
        parameterTypes - the parameter types of the constructor, can be null
        varArg - define is the constructor has varArgs
        Returns:
        the matching constructor, otherwise null
      • getMethods

        public java.util.List<JavaMethod> getMethods​(boolean superclasses)
        Return declared methods and optionally the inherited methods
        Specified by:
        getMethods in interface JavaClass
        Parameters:
        superclasses - true if inherited methods should be returned as well
        Returns:
        all methods
      • getMethodBySignature

        public JavaMethod getMethodBySignature​(java.lang.String name,
                                               java.util.List<JavaType> parameterTypes)
        Specified by:
        getMethodBySignature in interface JavaClass
        Parameters:
        name - the name of the method
        parameterTypes - the parameter types of the method, can be null.
        Returns:
        the matching method, otherwise null
      • getMethod

        public JavaMethod getMethod​(java.lang.String name,
                                    java.util.List<JavaType> parameterTypes,
                                    boolean varArgs)
        This should be the signature for getMethodBySignature.
        Specified by:
        getMethod in interface JavaClass
        Parameters:
        name - the name of the method
        parameterTypes - the parameter types of the method, can be null
        varArgs - define if the method has varArgs
        Returns:
        the matching method, otherwise null
      • getMethodBySignature

        public JavaMethod getMethodBySignature​(java.lang.String name,
                                               java.util.List<JavaType> parameterTypes,
                                               boolean superclasses)
        Specified by:
        getMethodBySignature in interface JavaClass
        Parameters:
        name - the name of the method
        parameterTypes - the parameter types of the method, can be null
        superclasses - to define if superclasses should be included as well
        Returns:
        the matching method, otherwise null
      • getMethodBySignature

        public JavaMethod getMethodBySignature​(java.lang.String name,
                                               java.util.List<JavaType> parameterTypes,
                                               boolean superclasses,
                                               boolean varArg)
        Specified by:
        getMethodBySignature in interface JavaClass
        Parameters:
        name - the name of the method
        parameterTypes - the parameter types of the method, can be null
        superclasses - true if inherited methods should be matched as well
        varArg - define if the method has varArgs
        Returns:
        the matching method, otherwise null
      • getMethodsBySignature

        public java.util.List<JavaMethod> getMethodsBySignature​(java.lang.String name,
                                                                java.util.List<JavaType> parameterTypes,
                                                                boolean superclasses)
        Specified by:
        getMethodsBySignature in interface JavaClass
        Parameters:
        name - the name of the method
        parameterTypes - the parameter types of the method, can be null
        superclasses - true if inherited methods should be matched as well
        Returns:
        the matching methods, otherwise null
      • getMethodsBySignature

        public java.util.List<JavaMethod> getMethodsBySignature​(java.lang.String name,
                                                                java.util.List<JavaType> parameterTypes,
                                                                boolean superclasses,
                                                                boolean varArg)
        Specified by:
        getMethodsBySignature in interface JavaClass
        Parameters:
        name - the name of the method
        parameterTypes - the parameter types of the method, can be null
        superclasses - true if inherited methods should be matched as well
        varArg - define if the method has varArgs
        Returns:
        the matching methods, otherwise null
      • getFields

        public java.util.List<JavaField> getFields()
        Equivalent of Class.getFields()
        Specified by:
        getFields in interface JavaClass
        Returns:
        a list of fiels, never null
      • getFieldByName

        public JavaField getFieldByName​(java.lang.String name)
        Equivalent of Class.getField(String), where this method can resolve every field
        Specified by:
        getFieldByName in interface JavaClass
        Parameters:
        name - the name of the field
        Returns:
        the field
      • getEnumConstants

        public java.util.List<JavaField> getEnumConstants()
        Based on Class.getEnumConstants().
        Specified by:
        getEnumConstants in interface JavaClass
        Returns:
        a List of enum constants if this class is an enum, otherwise null
      • getEnumConstantByName

        public JavaField getEnumConstantByName​(java.lang.String name)
        Specified by:
        getEnumConstantByName in interface JavaClass
        Parameters:
        name - the name of the enum constant
        Returns:
        the enumConstant matching the name, otherwise null
      • getNestedClasses

        public java.util.List<JavaClass> getNestedClasses()
        Equivalent of Class.getDeclaredClasses()
        Specified by:
        getNestedClasses in interface JavaClass
        Returns:
        a list of declared classes, never null
      • isA

        public boolean isA​(java.lang.String fullClassName)
        Specified by:
        isA in interface JavaClass
        Parameters:
        fullClassName - the FQN to match with
        Returns:
        true if this is of type FQN, otherwise false
      • isA

        public boolean isA​(JavaClass javaClass)
        Specified by:
        isA in interface JavaClass
        Parameters:
        javaClass - the JavaClass to match with
        Returns:
        true if this is of type javaClass, otherwise false
      • getBeanProperties

        public java.util.List<BeanProperty> getBeanProperties()
        Gets bean properties without looking in superclasses or interfaces.
        Specified by:
        getBeanProperties in interface JavaClass
        Returns:
        the bean properties
      • getBeanProperties

        public java.util.List<BeanProperty> getBeanProperties​(boolean superclasses)
        Specified by:
        getBeanProperties in interface JavaClass
        Parameters:
        superclasses - to define if superclasses should be included as well
        Returns:
        the bean properties
      • getBeanProperty

        public BeanProperty getBeanProperty​(java.lang.String propertyName)
        Gets bean property without looking in superclasses or interfaces.
        Specified by:
        getBeanProperty in interface JavaClass
        Parameters:
        propertyName - the name of the property
        Returns:
        the bean property
      • getBeanProperty

        public BeanProperty getBeanProperty​(java.lang.String propertyName,
                                            boolean superclasses)
        Specified by:
        getBeanProperty in interface JavaClass
        Parameters:
        propertyName - the name of the property
        superclasses - to define if superclasses should be included as well
        Returns:
        the bean property
      • getDerivedClasses

        public java.util.List<JavaClass> getDerivedClasses()
        Equivalent of Class.getClasses() Gets the known derived classes. That is, subclasses or implementing classes.
        Specified by:
        getDerivedClasses in interface JavaClass
        Returns:
        the derived classes
      • getTagsByName

        public java.util.List<DocletTag> getTagsByName​(java.lang.String name,
                                                       boolean superclasses)
        Specified by:
        getTagsByName in interface JavaClass
      • getName

        public java.lang.String getName()
        Equivalent of Class.getName().
        Specified by:
        getName in interface JavaClass
        Returns:
        the name of the entity (class, interface, array class, primitive type, or void) represented by this Class object, as a String.
      • getCanonicalName

        public java.lang.String getCanonicalName()
        Equivalent of (@link Class.getCanonicalName().
        Specified by:
        getCanonicalName in interface JavaType
        Returns:
        the canonical name of this class
      • getModifiers

        public java.util.List<java.lang.String> getModifiers()
        Equivalent of Class.getModifiers() This does not follow the java-api The Class.getModifiers() returns an int, which should be decoded with the Modifier. This method will return a list of strings representing the modifiers. If this member was extracted from a source, it will keep its order. Otherwise if will be in the preferred order of the java-api.
        Specified by:
        getModifiers in interface JavaClass
        Returns:
        all modifiers is this member
      • isPublic

        public boolean isPublic()
        (API description of Modifier.isPublic(int))

        Return true if the class includes the public modifier, false otherwise.

        Specified by:
        isPublic in interface JavaClass
        Returns:
        true if class has the public modifier, otherwise false
      • isProtected

        public boolean isProtected()
        (API description of Modifier.isProtected(int))

        Return true if the class includes the protected modifier, false otherwise.

        Specified by:
        isProtected in interface JavaClass
        Returns:
        true if class has the protected modifier, otherwise false
      • isPrivate

        public boolean isPrivate()
        (API description of Modifier.isPrivate(int))

        Return true if the class includes the private modifier, false otherwise.

        Specified by:
        isPrivate in interface JavaClass
        Returns:
        true if class has the private modifier, otherwise false
      • isFinal

        public boolean isFinal()
        (API description of Modifier.isFinal(int))

        Return true if the class includes the final modifier, false otherwise.

        Specified by:
        isFinal in interface JavaClass
        Returns:
        true if class has the final modifier, otherwise false
      • isStatic

        public boolean isStatic()
        (API description of Modifier.isStatic(int))

        Return true if the class includes the static modifier, false otherwise.

        Specified by:
        isStatic in interface JavaClass
        Returns:
        true if class the static modifier, otherwise false
      • isAbstract

        public boolean isAbstract()
        (API description of Modifier.isAbstract(int)) Return true if the class includes the abstract modifier, false otherwise.
        Specified by:
        isAbstract in interface JavaClass
        Returns:
        true if class has the abstract modifier, otherwise false