All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.thoughtworks.qdox.model.JavaType Maven / Gradle / Ivy

There is a newer version: 1.2.2.1-jre17
Show newest version
package com.thoughtworks.qdox.model;

/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

/**
 * Equivalent of {@link java.lang.reflect.Type}.
 * 
 */
public interface JavaType
{
    /**
     * 
* 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.
  • *
*
* * @return the binary name * @since 2.0 * @see https://docs.oracle.com/javase/specs/jls/se8/html/jls-13.html#jls-13.1 */ String getBinaryName(); /** * Equivalent of (@link {@link java.lang.Class#getCanonicalName()}. * * @return the canonical name of this class */ String getCanonicalName(); /** * The canonical name with generic information. * * @return the generic canonical name */ String getGenericCanonicalName(); /** *
* 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[][]
     * 
* * @return the fully qualified name, never null * @see JavaClass#getComponentType() * @see #getBinaryName() * @see https://docs.oracle.com/javase/specs/jls/se8/html/jls-6.html#jls-6.7 */ // @TODO make clear difference between FQN and canonicalName, specs say FQN can be null String getFullyQualifiedName(); /** * The fully qualified name with generic information. * * @return the generic fully qualified name */ String getGenericFullyQualifiedName(); /** * 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"
     * 
* * @return the name of the class as used in the source */ String getValue(); /** * 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>"
     * 
* @return the generic name of the class as used in the source */ String getGenericValue(); String toGenericString(); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy