diff options
author | Rich Hickey <richhickey@gmail.com> | 2008-09-15 23:48:05 +0000 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2008-09-15 23:48:05 +0000 |
commit | 9016a7ed9e5e728dff5e7c855b1baabccaf272d2 (patch) | |
tree | 6f38dc46e6e9bce25a70d255a37e42ec7f64ad41 /src | |
parent | f73bf9542f09528ab913da76b6bff661f3583e04 (diff) |
revert isSynthetic - still inadequate for JDK 6
Diffstat (limited to 'src')
-rw-r--r-- | src/jvm/clojure/lang/Reflector.java | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/src/jvm/clojure/lang/Reflector.java b/src/jvm/clojure/lang/Reflector.java index 100fc226..ad27a9d9 100644 --- a/src/jvm/clojure/lang/Reflector.java +++ b/src/jvm/clojure/lang/Reflector.java @@ -291,13 +291,22 @@ static public List getMethods(Class c, int arity, String name, boolean getStatic ArrayList methods = new ArrayList(); for(int i = 0; i < allmethods.length; i++) { - final Method method = allmethods[i]; - if(name.equals(method.getName()) - && Modifier.isStatic(method.getModifiers()) == getStatics - && method.getParameterTypes().length == arity - && !method.isSynthetic()) + try { - methods.add(method); + Method method = allmethods[i]; + if(name.equals(method.getName()) + && Modifier.isStatic(allmethods[i].getModifiers()) == getStatics + && allmethods[i].getParameterTypes().length == arity + && (!Modifier.isVolatile(allmethods[i].getModifiers()) + || c.getMethod(allmethods[i].getName(), allmethods[i].getParameterTypes()) + .equals(allmethods[i]))) + { + methods.add(allmethods[i]); + } + } + catch(NoSuchMethodException e) + { + throw new RuntimeException(e); } } if(!getStatics && c.isInterface()) |