1 19 20 package asm2; 21 22 import java.lang.reflect.InvocationHandler ; 23 import java.lang.reflect.Method ; 24 import java.util.List ; 25 26 27 public class AnnInvocationHandler 28 implements InvocationHandler { 29 private final String type; 30 private final List values; 31 32 public AnnInvocationHandler(String type, 33 List values) { 34 this.type = type; 35 this.values = values; 36 } 37 38 public Object invoke(Object proxy, Method m, 39 Object [] args) throws Throwable { 40 String name = m.getName(); 41 42 if("toString".equals(name)) { 43 StringBuffer sb = new StringBuffer (type); 44 sb.append("["); 45 String sep = ""; 46 for(int i = 0; i < values.size(); i++) { 47 Object [] v = (Object []) values.get(i); 48 sb.append(sep).append(v[0]+"="+v[1]); 49 sep = "; "; 50 } 51 sb.append("]"); 52 return sb.toString(); 53 } 54 55 for(int i = 0; i < values.size(); i++) { 56 Object [] value = (Object []) values.get(i); 57 if(value[ 0].equals(name)) { 58 return value[ 1]; 59 } 60 } 61 62 String msg = "Invalid method call: "+name; 63 throw new RuntimeException (msg); 64 } 65 66 } 67 68 | Popular Tags |