2 * nothing proxy factory
4 * License : The MIT License
5 * Copyright(c) 2013 MikuToga Partners
8 package jp.sfjp.mikutoga.corelib;
10 import java.lang.reflect.InvocationHandler;
11 import java.lang.reflect.Method;
12 import java.lang.reflect.Proxy;
15 * 何もしないインタフェース実装を生成する。
17 public final class EmptyProxyFactory {
19 /** 何もせず何も返さないInvoker。 */
20 public static final InvocationHandler NOTHING_INVOKER = new Nothing();
26 private EmptyProxyFactory(){
28 throw new AssertionError();
33 * 何もしないインタフェース実装のインスタンスを生成する。
35 * <p>インタフェースの各メソッド戻り値はvoidでなければならない。
37 * @param types インタフェース群
38 * @return インタフェースを実装したインスタンス。
40 public static Object buildEmptyProxy(Class<?>... types){
41 ClassLoader loader = Thread.currentThread().getContextClassLoader();
42 Object proxy = buildEmptyProxy(loader, types);
47 * 何もしないインタフェース実装のインスタンスを生成する。
49 * <p>インタフェースの各メソッド戻り値はvoidでなければならない。
51 * @param loader class-loader
52 * @param types インタフェース群
53 * @return インタフェースを実装したインスタンス。
55 public static Object buildEmptyProxy(
56 ClassLoader loader, Class<?>... types){
58 Proxy.newProxyInstance(loader, types, NOTHING_INVOKER);
66 private static class Nothing implements InvocationHandler{
79 * @param proxy {@inheritDoc}
80 * @param method {@inheritDoc}
81 * @param args {@inheritDoc}
82 * @return {@inheritDoc}
85 public Object invoke(Object proxy, Method method, Object[] args){