/*
* @(#)ReflectAccess.java 1.12 04/01/28
*
* Copyright 2004 Sun Microsystems, Inc. All rights reserved.
* SUN 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<T>(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();
}
//
// 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();
}
}
|