On Sep 16, 2008, at 3:15 AM, Rich Hickey wrote:

>
> How is everyone handling the filtering of synthetic/bridge methods?
>
> Using the reflection API, I'm seeing differences between JDK 1.5 and
> 6, with methods like StringBuilder.length marked as bridge/synthetic
> in JDK 6 (!?)
>
> Is there a reliable way to deduce the 'real' method set via
> reflection?
>
> Here are the signatures and (hex) modifiers for StringBuilder, via
> getMethods():
>
> http://clojure.googlegroups.com/web/jdk5.txt
> http://clojure.googlegroups.com/web/jdk6.txt
>
> In JDK 1.5, filtering on isBridge works ok. But this will filter out
> StringBuilder.length and others on JDK 6.

Most interesting, especially considering that bridge methods are  
really only ever needed for parametric types, and there's not a single  
type parameter in StringBuilder...

Well, according to your pages, the length() method itself has 1041 for  
modifier in , which is 1024+16+1, which, according to 
<http://java.sun.com/javase/6/docs/api/constant-values.html#java.lang.reflect.Modifier.PUBLIC
 
 > means ABSTRACT+FINAL+PUBLIC. I guess they're using the otherwise  
nonsensical ABSTRACT+FINAL combo to denote a bridge? (I honestly don't  
know). If so, then even Java 5 StringBuilder has a  suspiciously large  
number of these... i.e. doppelgangers of normal insert() and append()  
methods returning java.lang.AbstractStringBuilder (a class I otherwise  
didn't hear of). I find that too quite strange.

> Thanks for any ideas,

Well, can't say I have any at the moment... I'm thoroughly puzzled  
myself.

Attila.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "JVM 
Languages" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/jvm-languages?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to