[Java SE 7] 次世代Javaの動向 5 [dolphin]
■ このスレッドは過去ログ倉庫に格納されています
0705デフォルトの名無しさん
2007/10/14(日) 18:54:47public static <R, T, throws E>
R log(T t, Class<T> clazz, { T => R throws E } block) throws E {
T proxy = Proxy.newProxyInstance(t.getClass().getClassLoader(),
new Class[]{ clazz },
new InvocationHandler(Object obj, Method method, Object args)){
StringBuilder sb = new StringBuilder(obj + " : " +method + " : ");
for(Object o : args){ sb.append(o).append(" , "); }
System.out.println(sb);
return method.invoke( obj, args );
}
System.out.println("Logging Start : " + t );
R r = block.invoke(proxy);
System.out.println("Logging End : " + t );
return r;
}
で、使い方
log(List logList : list, List.class){
//処理
}
これでこのブロックの中でだけ特定の変数のメソッド呼び出しのログが取れるはず
ちょっといじれば特定のアノテーションのついているメソッドの呼び出しだけに反応するようにもできると思う
■ このスレッドは過去ログ倉庫に格納されています