/*
* Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved.
* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*/
package java.lang.reflect;
import sun.reflect.
MethodAccessor;
import sun.reflect.
ConstructorAccessor;
/** Package-private class implementing the
sun.reflect.LangReflectAccess interface, allowing the java.lang
package to instantiate objects in this package. */
class
ReflectAccess implements sun.reflect.
LangReflectAccess {
public
Field newField(
Class<?>
declaringClass,
String name,
Class<?>
type,
int
modifiers,
int
slot,
String signature,
byte[]
annotations)
{
return new
Field(
declaringClass,
name,
type,
modifiers,
slot,
signature,
annotations);
}
public
Method newMethod(
Class<?>
declaringClass,
String name,
Class<?>[]
parameterTypes,
Class<?>
returnType,
Class<?>[]
checkedExceptions,
int
modifiers,
int
slot,
String signature,
byte[]
annotations,
byte[]
parameterAnnotations,
byte[]
annotationDefault)
{
return new
Method(
declaringClass,
name,
parameterTypes,
returnType,
checkedExceptions,
modifiers,
slot,
signature,
annotations,
parameterAnnotations,
annotationDefault);
}
public <T>
Constructor<T>
newConstructor(
Class<T>
declaringClass,
Class<?>[]
parameterTypes,
Class<?>[]
checkedExceptions,
int
modifiers,
int
slot,
String signature,
byte[]
annotations,
byte[]
parameterAnnotations)
{
return new
Constructor<>(
declaringClass,
parameterTypes,
checkedExceptions,
modifiers,
slot,
signature,
annotations,
parameterAnnotations);
}
public
MethodAccessor getMethodAccessor(
Method m) {
return
m.
getMethodAccessor();
}
public void
setMethodAccessor(
Method m,
MethodAccessor accessor) {
m.
setMethodAccessor(
accessor);
}
public
ConstructorAccessor getConstructorAccessor(
Constructor<?>
c) {
return
c.
getConstructorAccessor();
}
public void
setConstructorAccessor(
Constructor<?>
c,
ConstructorAccessor accessor)
{
c.
setConstructorAccessor(
accessor);
}
public int
getConstructorSlot(
Constructor<?>
c) {
return
c.
getSlot();
}
public
String getConstructorSignature(
Constructor<?>
c) {
return
c.
getSignature();
}
public byte[]
getConstructorAnnotations(
Constructor<?>
c) {
return
c.
getRawAnnotations();
}
public byte[]
getConstructorParameterAnnotations(
Constructor<?>
c) {
return
c.
getRawParameterAnnotations();
}
public byte[]
getExecutableTypeAnnotationBytes(
Executable ex) {
return
ex.
getTypeAnnotationBytes();
}
//
// Copying routines, needed to quickly fabricate new Field,
// Method, and Constructor objects from templates
//
public
Method copyMethod(
Method arg) {
return
arg.
copy();
}
public
Field copyField(
Field arg) {
return
arg.
copy();
}
public <T>
Constructor<T>
copyConstructor(
Constructor<T>
arg) {
return
arg.
copy();
}
}