01 /*
02 * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved.
03 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
04 *
05 * This code is free software; you can redistribute it and/or modify it
06 * under the terms of the GNU General Public License version 2 only, as
07 * published by the Free Software Foundation. Sun designates this
08 * particular file as subject to the "Classpath" exception as provided
09 * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
22 * CA 95054 USA or visit www.sun.com if you need additional information or
23 * have any questions.
24 */
25
26 package java.lang.annotation;
27
28 import java.lang.reflect.Method;
29
30 /**
31 * Thrown to indicate that a program has attempted to access an element of
32 * an annotation whose type has changed after the annotation was compiled
33 * (or serialized).
34 *
35 * @author Josh Bloch
36 * @since 1.5
37 */
38 public class AnnotationTypeMismatchException extends RuntimeException {
39 /**
40 * The <tt>Method</tt> object for the annotation element.
41 */
42 private final Method element;
43
44 /**
45 * The (erroneous) type of data found in the annotation. This string
46 * may, but is not required to, contain the value as well. The exact
47 * format of the string is unspecified.
48 */
49 private final String foundType;
50
51 /**
52 * Constructs an AnnotationTypeMismatchException for the specified
53 * annotation type element and found data type.
54 *
55 * @param element the <tt>Method</tt> object for the annotation element
56 * @param foundType the (erroneous) type of data found in the annotation.
57 * This string may, but is not required to, contain the value
58 * as well. The exact format of the string is unspecified.
59 */
60 public AnnotationTypeMismatchException(Method element,
61 String foundType) {
62 super ("Incorrectly typed data found for annotation element "
63 + element + " (Found data of type " + foundType + ")");
64 this .element = element;
65 this .foundType = foundType;
66 }
67
68 /**
69 * Returns the <tt>Method</tt> object for the incorrectly typed element.
70 *
71 * @return the <tt>Method</tt> object for the incorrectly typed element
72 */
73 public Method element() {
74 return this .element;
75 }
76
77 /**
78 * Returns the type of data found in the incorrectly typed element.
79 * The returned string may, but is not required to, contain the value
80 * as well. The exact format of the string is unspecified.
81 *
82 * @return the type of data found in the incorrectly typed element
83 */
84 public String foundType() {
85 return this.foundType;
86 }
87 }
|