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 sun.misc;
27
28 import java.lang.annotation.Annotation;
29 import java.lang.reflect.Executable;
30 import java.security.AccessControlContext;
31 import java.util.Map;
32
33 import sun.reflect.ConstantPool;
34 import sun.reflect.annotation.AnnotationType;
35 import sun.nio.ch.Interruptible;
36
37 public interface JavaLangAccess {
38 /** Return the constant pool for a class. */
39 ConstantPool getConstantPool(Class<?> klass);
40
41 /**
42 * Compare-And-Swap the AnnotationType instance corresponding to this class.
43 * (This method only applies to annotation types.)
44 */
45 boolean casAnnotationType(Class<?> klass, AnnotationType oldType, AnnotationType newType);
46
47 /**
48 * Get the AnnotationType instance corresponding to this class.
49 * (This method only applies to annotation types.)
50 */
51 AnnotationType getAnnotationType(Class<?> klass);
62 byte[] getRawClassAnnotations(Class<?> klass);
63
64 /**
65 * Get the array of bytes that is the class-file representation
66 * of this Class' type annotations.
67 */
68 byte[] getRawClassTypeAnnotations(Class<?> klass);
69
70 /**
71 * Get the array of bytes that is the class-file representation
72 * of this Executable's type annotations.
73 */
74 byte[] getRawExecutableTypeAnnotations(Executable executable);
75
76 /**
77 * Returns the elements of an enum class or null if the
78 * Class object does not represent an enum type;
79 * the result is uncloned, cached, and shared by all callers.
80 */
81 <E extends Enum<E>> E[] getEnumConstantsShared(Class<E> klass);
82
83 /** Set thread's blocker field. */
84 void blockedOn(Thread t, Interruptible b);
85
86 /**
87 * Registers a shutdown hook.
88 *
89 * It is expected that this method with registerShutdownInProgress=true
90 * is only used to register DeleteOnExitHook since the first file
91 * may be added to the delete on exit list by the application shutdown
92 * hooks.
93 *
94 * @params slot the slot in the shutdown hook array, whose element
95 * will be invoked in order during shutdown
96 * @params registerShutdownInProgress true to allow the hook
97 * to be registered even if the shutdown is in progress.
98 * @params hook the hook to be registered
99 *
100 * @throw IllegalStateException if shutdown is in progress and
101 * the slot is not valid to register.
|
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 sun.misc;
27
28 import java.lang.annotation.Annotation;
29 import java.lang.reflect.Executable;
30 import java.security.AccessControlContext;
31 import java.util.Map;
32 import java.util.function.Function;
33
34 import sun.reflect.ConstantPool;
35 import sun.reflect.annotation.AnnotationType;
36 import sun.nio.ch.Interruptible;
37
38 public interface JavaLangAccess {
39 /** Return the constant pool for a class. */
40 ConstantPool getConstantPool(Class<?> klass);
41
42 /**
43 * Compare-And-Swap the AnnotationType instance corresponding to this class.
44 * (This method only applies to annotation types.)
45 */
46 boolean casAnnotationType(Class<?> klass, AnnotationType oldType, AnnotationType newType);
47
48 /**
49 * Get the AnnotationType instance corresponding to this class.
50 * (This method only applies to annotation types.)
51 */
52 AnnotationType getAnnotationType(Class<?> klass);
63 byte[] getRawClassAnnotations(Class<?> klass);
64
65 /**
66 * Get the array of bytes that is the class-file representation
67 * of this Class' type annotations.
68 */
69 byte[] getRawClassTypeAnnotations(Class<?> klass);
70
71 /**
72 * Get the array of bytes that is the class-file representation
73 * of this Executable's type annotations.
74 */
75 byte[] getRawExecutableTypeAnnotations(Executable executable);
76
77 /**
78 * Returns the elements of an enum class or null if the
79 * Class object does not represent an enum type;
80 * the result is uncloned, cached, and shared by all callers.
81 */
82 <E extends Enum<E>> E[] getEnumConstantsShared(Class<E> klass);
83
84 /**
85 * If given Class represents a generic class or interface, then the result of
86 * applying given function to the Class object is returned, otherwise null.
87 * The result is cached in per-Class map using identity of given key.
88 */
89 <D> D getGenericDerivative(Class<?> clazz, Object key,
90 Function<Class<?>, ? extends D> function);
91
92 /** Set thread's blocker field. */
93 void blockedOn(Thread t, Interruptible b);
94
95 /**
96 * Registers a shutdown hook.
97 *
98 * It is expected that this method with registerShutdownInProgress=true
99 * is only used to register DeleteOnExitHook since the first file
100 * may be added to the delete on exit list by the application shutdown
101 * hooks.
102 *
103 * @params slot the slot in the shutdown hook array, whose element
104 * will be invoked in order during shutdown
105 * @params registerShutdownInProgress true to allow the hook
106 * to be registered even if the shutdown is in progress.
107 * @params hook the hook to be registered
108 *
109 * @throw IllegalStateException if shutdown is in progress and
110 * the slot is not valid to register.
|