1 /* 2 * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package java.lang.reflect; 27 28 29 /** 30 * ParameterizedType represents a parameterized type such as 31 * Collection<String>. 32 * 33 * <p>A parameterized type is created the first time it is needed by a 34 * reflective method, as specified in this package. When a 35 * parameterized type p is created, the generic type declaration that 36 * p instantiates is resolved, and all type arguments of p are created 37 * recursively. See {@link java.lang.reflect.TypeVariable 38 * TypeVariable} for details on the creation process for type 39 * variables. Repeated creation of a parameterized type has no effect. 40 * 41 * <p>Instances of classes that implement this interface must implement 42 * an equals() method that equates any two instances that share the 43 * same generic type declaration and have equal type parameters. 44 * 45 * @since 1.5 46 */ 47 public interface ParameterizedType extends Type { 48 /** 49 * Returns an array of {@code Type} objects representing the actual type 50 * arguments to this type. 51 * 52 * <p>Note that in some cases, the returned array be empty. This can occur 53 * if this type represents a non-parameterized type nested within 54 * a parameterized type. 55 * 56 * @return an array of {@code Type} objects representing the actual type 57 * arguments to this type 58 * @throws TypeNotPresentException if any of the 59 * actual type arguments refers to a non-existent type declaration 60 * @throws MalformedParameterizedTypeException if any of the 61 * actual type parameters refer to a parameterized type that cannot 62 * be instantiated for any reason 63 * @since 1.5 64 */ 65 Type[] getActualTypeArguments(); 66 67 /** 68 * Returns the {@code Type} object representing the class or interface 69 * that declared this type. 70 * 71 * @return the {@code Type} object representing the class or interface 72 * that declared this type 73 * @since 1.5 74 */ 75 Type getRawType(); 76 77 /** 78 * Returns a {@code Type} object representing the type that this type 79 * is a member of. For example, if this type is {@code O<T>.I<S>}, 80 * return a representation of {@code O<T>}. 81 * 82 * <p>If this type is a top-level type, {@code null} is returned. 83 * 84 * @return a {@code Type} object representing the type that 85 * this type is a member of. If this type is a top-level type, 86 * {@code null} is returned 87 * @throws TypeNotPresentException if the owner type 88 * refers to a non-existent type declaration 89 * @throws MalformedParameterizedTypeException if the owner type 90 * refers to a parameterized type that cannot be instantiated 91 * for any reason 92 * @since 1.5 93 */ 94 Type getOwnerType(); 95 }