01: /*
02: * Copyright 2001-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 sun.reflect;
27:
28: import java.lang.reflect.*;
29:
30: /** An interface which gives privileged packages Java-level access to
31: internals of java.lang.reflect. */
32:
33: public interface LangReflectAccess {
34: /** Creates a new java.lang.reflect.Field. Access checks as per
35: java.lang.reflect.AccessibleObject are not overridden. */
36: public Field newField(Class declaringClass, String name,
37: Class type, int modifiers, int slot, String signature,
38: byte[] annotations);
39:
40: /** Creates a new java.lang.reflect.Method. Access checks as per
41: java.lang.reflect.AccessibleObject are not overridden. */
42: public Method newMethod(Class declaringClass, String name,
43: Class[] parameterTypes, Class returnType,
44: Class[] checkedExceptions, int modifiers, int slot,
45: String signature, byte[] annotations,
46: byte[] parameterAnnotations, byte[] annotationDefault);
47:
48: /** Creates a new java.lang.reflect.Constructor. Access checks as
49: per java.lang.reflect.AccessibleObject are not overridden. */
50: public <T> Constructor<T> newConstructor(Class<T> declaringClass,
51: Class[] parameterTypes, Class[] checkedExceptions,
52: int modifiers, int slot, String signature,
53: byte[] annotations, byte[] parameterAnnotations);
54:
55: /** Gets the MethodAccessor object for a java.lang.reflect.Method */
56: public MethodAccessor getMethodAccessor(Method m);
57:
58: /** Sets the MethodAccessor object for a java.lang.reflect.Method */
59: public void setMethodAccessor(Method m, MethodAccessor accessor);
60:
61: /** Gets the ConstructorAccessor object for a
62: java.lang.reflect.Constructor */
63: public ConstructorAccessor getConstructorAccessor(Constructor c);
64:
65: /** Sets the ConstructorAccessor object for a
66: java.lang.reflect.Constructor */
67: public void setConstructorAccessor(Constructor c,
68: ConstructorAccessor accessor);
69:
70: /** Gets the "slot" field from a Constructor (used for serialization) */
71: public int getConstructorSlot(Constructor c);
72:
73: /** Gets the "signature" field from a Constructor (used for serialization) */
74: public String getConstructorSignature(Constructor c);
75:
76: /** Gets the "annotations" field from a Constructor (used for serialization) */
77: public byte[] getConstructorAnnotations(Constructor c);
78:
79: /** Gets the "parameterAnnotations" field from a Constructor (used for serialization) */
80: public byte[] getConstructorParameterAnnotations(Constructor c);
81:
82: //
83: // Copying routines, needed to quickly fabricate new Field,
84: // Method, and Constructor objects from templates
85: //
86:
87: /** Makes a "child" copy of a Method */
88: public Method copyMethod(Method arg);
89:
90: /** Makes a "child" copy of a Field */
91: public Field copyField(Field arg);
92:
93: /** Makes a "child" copy of a Constructor */
94: public <T> Constructor<T> copyConstructor(Constructor<T> arg);
95: }
|