OK, Its even worse, because there is no easy way to find out if a method/field can be called without actually calling it. What I mean is that there is no method that says can I call this method/field without getting an IllegalAccessException.
(The method isAccessible() is badly named, and should be called isIgnoreScope().) This adds even more complexity to the code. I know about the MethodUtils from [beanutils], but has anyone else come up against these kinds of issues with reflection. Stephen ----- Original Message ----- From: "Stephen Colebourne" <[EMAIL PROTECTED]> To: "Jakarta Commons Developers List" <[EMAIL PROTECTED]> Sent: Friday, October 11, 2002 9:35 PM Subject: [lang] Reflection - how accurate > I've been coding up the new reflection handling code (low level) for [lang]. > And I've discovered that the Sun implementation (1.3.1) is screwed. > Consider: > > Class A. Defines _public_ field named 'number' value 1 > Class B. Subclass of A. Defines _private_ field named 'number' value 2 > Interface I. Defines _public static final_ field named 'number' value 3 > Class C. Subclass of B, implements I. > > What value does 'number' have if you reference it from C ??? > > Testing shows it is 3, because the private field in B hides the public field > in A. > > However, Java reflection will give you the field on A if you request it > passing in C. In other words Java 1.3.1 Sun reflection is screwed. I've just > tested it on Sun's 1.4.0 however and it gives the correct answer. > > Now, I can work around this, doing lots of searches and the like, but it > will slow things down a lot. > - So how accurate do we need to be?? > - Should I code the workaround just for 1.3 java?? > - What about non-Sun implementations?? > - What about 1.2?? > - Do we care anyway, as its such a peculiar case?? > > Stephen > > > -- > To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> > For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> > -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
