1. /*
  2. * @(#)ReflectAccess.java 1.12 04/01/28
  3. *
  4. * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
  5. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
  6. */
  7. package java.lang.reflect;
  8. import sun.reflect.MethodAccessor;
  9. import sun.reflect.ConstructorAccessor;
  10. /** Package-private class implementing the
  11. sun.reflect.LangReflectAccess interface, allowing the java.lang
  12. package to instantiate objects in this package. */
  13. class ReflectAccess implements sun.reflect.LangReflectAccess {
  14. public Field newField(Class declaringClass,
  15. String name,
  16. Class type,
  17. int modifiers,
  18. int slot,
  19. String signature,
  20. byte[] annotations)
  21. {
  22. return new Field(declaringClass,
  23. name,
  24. type,
  25. modifiers,
  26. slot,
  27. signature,
  28. annotations);
  29. }
  30. public Method newMethod(Class declaringClass,
  31. String name,
  32. Class[] parameterTypes,
  33. Class returnType,
  34. Class[] checkedExceptions,
  35. int modifiers,
  36. int slot,
  37. String signature,
  38. byte[] annotations,
  39. byte[] parameterAnnotations,
  40. byte[] annotationDefault)
  41. {
  42. return new Method(declaringClass,
  43. name,
  44. parameterTypes,
  45. returnType,
  46. checkedExceptions,
  47. modifiers,
  48. slot,
  49. signature,
  50. annotations,
  51. parameterAnnotations,
  52. annotationDefault);
  53. }
  54. public <T> Constructor<T> newConstructor(Class<T> declaringClass,
  55. Class[] parameterTypes,
  56. Class[] checkedExceptions,
  57. int modifiers,
  58. int slot,
  59. String signature,
  60. byte[] annotations,
  61. byte[] parameterAnnotations)
  62. {
  63. return new Constructor<T>(declaringClass,
  64. parameterTypes,
  65. checkedExceptions,
  66. modifiers,
  67. slot,
  68. signature,
  69. annotations,
  70. parameterAnnotations);
  71. }
  72. public MethodAccessor getMethodAccessor(Method m) {
  73. return m.getMethodAccessor();
  74. }
  75. public void setMethodAccessor(Method m, MethodAccessor accessor) {
  76. m.setMethodAccessor(accessor);
  77. }
  78. public ConstructorAccessor getConstructorAccessor(Constructor c) {
  79. return c.getConstructorAccessor();
  80. }
  81. public void setConstructorAccessor(Constructor c,
  82. ConstructorAccessor accessor)
  83. {
  84. c.setConstructorAccessor(accessor);
  85. }
  86. public int getConstructorSlot(Constructor c) {
  87. return c.getSlot();
  88. }
  89. public String getConstructorSignature(Constructor c) {
  90. return c.getSignature();
  91. }
  92. public byte[] getConstructorAnnotations(Constructor c) {
  93. return c.getRawAnnotations();
  94. }
  95. public byte[] getConstructorParameterAnnotations(Constructor c) {
  96. return c.getRawParameterAnnotations();
  97. }
  98. //
  99. // Copying routines, needed to quickly fabricate new Field,
  100. // Method, and Constructor objects from templates
  101. //
  102. public Method copyMethod(Method arg) {
  103. return arg.copy();
  104. }
  105. public Field copyField(Field arg) {
  106. return arg.copy();
  107. }
  108. public <T> Constructor<T> copyConstructor(Constructor<T> arg) {
  109. return arg.copy();
  110. }
  111. }