Hi, I'm making heavy use of class in java.lang.reflect such as methods, constructors, fields and parameters in a library that I am trying to secure. I both take them as parameters and return them from various methods. Internally, I need to keep "safe" copies with the accessible bit set. I do not want to expose these "safe" copies to the outside, but I want to cache them for performance reasons.
However, I find it rather cumbersome to make safe copies of all of these. Take, for example, a Constructor. If I want to return a copy of a Constructor with the setAccessible set to false I need to do this: Class<?> declaringClass = constructor.getDeclaringClass(); try { return declaringClass.getConstructor(constructor.getParameterTypes()); } catch (NoSuchMethodException e) { throw new RuntimeException("This should never happen", e); } Copying a Method looks similar. And if I want to make a safe copy of a parameter. I first need to clone its declaring executable. And then run through all the parameters and see if they are equal, because Parameter does not expose the index field. Thoughts? /Kasper