OSDN Git Service

original
[gb-231r1-is01/Gingerbread_2.3.3_r1_IS01.git] / libcore / luni / src / main / java / java / lang / reflect / TypeVariable.java
1 /* Licensed to the Apache Software Foundation (ASF) under one or more
2  * contributor license agreements.  See the NOTICE file distributed with
3  * this work for additional information regarding copyright ownership.
4  * The ASF licenses this file to You under the Apache License, Version 2.0
5  * (the "License"); you may not use this file except in compliance with
6  * the License.  You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package java.lang.reflect;
18
19 /**
20  * This interface represents a type variables such as {@code 'T'} in {@code
21  * 'public interface Comparable<T>'}, the bounded {@code 'T'} in {@code
22  * 'public interface A<T extends Number>'} or the multiple bounded {@code
23  * 'T'} in {@code 'public interface B<T extends Number & Cloneable>'}.
24  *
25  * @param <D>
26  *            the generic declaration that declares this type variable
27  * @since 1.5
28  */
29 public interface TypeVariable<D extends GenericDeclaration> extends Type {
30
31     /**
32      * Returns the upper bounds of this type variable. {@code Object} is the
33      * implicit upper bound if no other bounds are declared.
34      *
35      * @return the upper bounds of this type variable
36      *
37      * @throws TypeNotPresentException
38      *             if any of the bounds points to a missing type
39      * @throws MalformedParameterizedTypeException
40      *             if any of the bounds points to a type that cannot be
41      *             instantiated for some reason
42      */
43     Type[] getBounds();
44
45     /**
46      * Returns the language construct that declares this type variable.
47      *
48      * @return the generic declaration
49      */
50     D getGenericDeclaration();
51
52     /**
53      * Returns the name of this type variable as it is specified in source
54      * code.
55      *
56      * @return the name of this type variable
57      */
58     String getName();
59 }