1 /* 2 * Copyright (c) 2003, 2016, 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. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24 package pkg; 25 26 import java.util.*; 27 import java.util.function.Supplier; 28 29 /** 30 * Just a sample class with type parameters. This is a link to myself: 31 * {@link TypeParameters} 32 * 33 * @param <E> the type parameter for this class. 34 * @param <BadClassTypeParam> this should cause a warning. 35 * @see TypeParameters 36 */ 37 38 public class TypeParameters<E> implements SubInterface<E> { 39 40 /** 41 * This method uses the type parameter of this class. 42 * @param param an object that is of type E. 43 * @return the parameter itself. 44 */ 45 public E methodThatUsesTypeParameter(E param) { 46 return param; 47 } 48 49 /** 50 * This method has type parameters. The list of type parameters is long 51 * so there should be a line break in the member summary table. 52 * 53 * @param <T> This is the first type parameter. 54 * @param <V> This is the second type parameter. 55 * @param <BadMethodTypeParam> this should cause a warning. 56 * @param param1 just a parameter. 57 * @param param2 just another parameter. 58 * 59 */ 60 public <T extends List, V> String[] methodThatHasTypeParameters(T param1, 61 V param2) { return null;} 62 63 /** 64 * This method has type parameters. The list of type parameters is short 65 * so there should not be a line break in the member summary table. 66 * @author Owner 67 * 68 * @param <A> This is the first type parameter. 69 */ 70 public <A> void methodThatHasTypeParmaters(A... a) {} 71 72 /** 73 * This method returns a TypeParameter array and takes in a TypeParameter array 74 * @param e an array of TypeParameters 75 * @return an array of TypeParameters 76 */ 77 public E[] methodThatReturnsTypeParameterA(E[] e) { return null;} 78 79 /** 80 * Returns TypeParameters 81 * @param <T> a typeParameters 82 * @param coll a collection 83 * @return typeParameters 84 */ 85 public <T extends Object & Comparable<? super T>> T 86 methodtThatReturnsTypeParametersB(Collection<? extends T> coll) { 87 return null; 88 } 89 90 /** 91 * Return the contained value, if present, otherwise throw an exception 92 * to be created by the provided supplier. 93 * 94 * @param <X> Type of the exception to be thrown 95 * @param exceptionSupplier The supplier which will return the exception to 96 * be thrown 97 * @return the present value 98 * @throws X if there is no value present 99 * @throws NullPointerException if no value is present and 100 * {@code exceptionSupplier} is null 101 */ 102 public <X extends Throwable> E orElseThrow(Supplier<? extends X> exceptionSupplier) throws X { 103 return null; 104 }}