[PATCH] 8188240: Reflection Proxy should skip static methods
David Lloyd
david.lloyd at redhat.com
Tue Mar 13 23:06:01 UTC 2018
I worked up a little patch for 8188240. I was able to co-opt an
existing test which now fails before the patch and passes after. It's
a tiny patch so I'm including it inline. I've CC'd Mandy because she
filed the original bug.
Here's the patch (use patch -p1 to apply):
-------- cut ------- 8< ------- cut --------
diff --git a/src/java.base/share/classes/java/lang/reflect/ProxyGenerator.java
b/src/java.base/share/classes/java/lang/reflect/ProxyGenerator.java
index cc8dbbfffab..465a5b938e3 100644
--- a/src/java.base/share/classes/java/lang/reflect/ProxyGenerator.java
+++ b/src/java.base/share/classes/java/lang/reflect/ProxyGenerator.java
@@ -449,7 +449,9 @@ class ProxyGenerator {
*/
for (Class<?> intf : interfaces) {
for (Method m : intf.getMethods()) {
- addProxyMethod(m, intf);
+ if (! Modifier.isStatic(m.getModifiers())) {
+ addProxyMethod(m, intf);
+ }
}
}
diff --git a/test/jdk/java/lang/reflect/Proxy/Basic1.java
b/test/jdk/java/lang/reflect/Proxy/Basic1.java
index b2440ccd9f9..4a21470b1be 100644
--- a/test/jdk/java/lang/reflect/Proxy/Basic1.java
+++ b/test/jdk/java/lang/reflect/Proxy/Basic1.java
@@ -36,6 +36,10 @@ import java.util.*;
public class Basic1 {
+ public interface ClashWithRunnable {
+ static int run() { return 123; }
+ }
+
public static void main(String[] args) {
System.err.println(
@@ -43,7 +47,7 @@ public class Basic1 {
try {
Class<?>[] interfaces =
- new Class<?>[] { Runnable.class, Observer.class };
+ new Class<?>[] { ClashWithRunnable.class,
Runnable.class, Observer.class };
ClassLoader loader = ClassLoader.getSystemClassLoader();
-------- cut ------- 8< ------- cut --------
--
- DML
More information about the core-libs-dev
mailing list