package com.shade.util; import java.lang.reflect.Constructor; import org.newdawn.slick.SlickException; @SuppressWarnings("unchecked") public class Reflection { public static Object getInstance(String name, Object... args) throws SlickException { try { Class c = Class.forName(name); Class[] params = extractTypes(args); Constructor constructor = c.getConstructor(params); return constructor.newInstance(args); } catch (Exception e) { throw new SlickException("Couldn't create new object.", e); } } private static Class[] extractTypes(Object[] args) { Class[] types = new Class[args.length]; for (int i = 0; i < args.length; i++) { types[i] = getType(args[i].getClass()); } return types; } private static Class getType(Class c) { if (c.equals(Integer.class)) { return int.class; } if (c.equals(Float.class)) { return float.class; } return c; } }