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 */ | 1 /* 2 * Copyright (c) 2003, 2020, 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 * {@code 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 * @jls 4.5 Parameterized Types 46 * @since 1.5 47 */ 48 public interface ParameterizedType extends Type { 49 /** 50 * Returns an array of {@code Type} objects representing the actual type 51 * arguments to this type. 52 * 53 * <p>Note that in some cases, the returned array be empty. This can occur 54 * if this type represents a non-parameterized type nested within 55 * a parameterized type. 56 * 57 * @return an array of {@code Type} objects representing the actual type 58 * arguments to this type 59 * @throws TypeNotPresentException if any of the 60 * actual type arguments refers to a non-existent type declaration 61 * @throws MalformedParameterizedTypeException if any of the 62 * actual type parameters refer to a parameterized type that cannot 63 * be instantiated for any reason 64 * @since 1.5 65 */ |