OSDN Git Service

use context classloader for java.lang.reflect.Proxy
authorOlyutorskii <olyutorskii@users.osdn.me>
Wed, 12 Jun 2019 09:20:38 +0000 (18:20 +0900)
committerOlyutorskii <olyutorskii@users.osdn.me>
Wed, 12 Jun 2019 09:20:38 +0000 (18:20 +0900)
src/main/java/jp/sfjp/mikutoga/corelib/EmptyProxyFactory.java

index e3ce681..3139b11 100644 (file)
@@ -38,11 +38,24 @@ public final class EmptyProxyFactory {
      * @return インタフェースを実装したインスタンス。
      */
     public static Object buildEmptyProxy(Class<?>... types){
-        ClassLoader loader = types[0].getClassLoader();
+        ClassLoader loader = Thread.currentThread().getContextClassLoader();
+        Object proxy = buildEmptyProxy(loader, types);
+        return proxy;
+    }
 
+    /**
+     * 何もしないインタフェース実装のインスタンスを生成する。
+     *
+     * <p>インタフェースの各メソッド戻り値はvoidでなければならない。
+     *
+     * @param loader class-loader
+     * @param types インタフェース群
+     * @return インタフェースを実装したインスタンス。
+     */
+    public static Object buildEmptyProxy(
+            ClassLoader loader, Class<?>... types){
         Object proxy =
                 Proxy.newProxyInstance(loader, types, NOTHING_INVOKER);
-
         return proxy;
     }