Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
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 "[]".
*
* @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();
}