TypeParameters.java revision 3233:b5d08bc0d224
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
24package pkg;
25
26import java.util.*;
27import 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  this should cause a warning.
35 * @see TypeParameters
36 */
37
38public 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  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    }}
105