package utils.object
{
/**
* Creates an instance of a given Class,
* optionally passing arguments to the constructor.
*
* @param classToInstantiate Class to create an instance of.
* @param constructorArguments Array of arguments to pass to the Class constructor.
*
* @return An instance of classToInstantiate
*
* @throws ArgumentError When the number of constructorArguments is more than 10.
*
* @see utils.object#create
*
* @example
*
* var event:Event = createInstance(Event, [Event.COMPLETE, true, false]);
*
*
* @author drewbourne
*/
public function createInstance(classToInstantiate:Class, constructorArguments:Array = null):Object
{
var args:Array = constructorArguments || [];
switch (args.length)
{
case 0: return new classToInstantiate();
case 1: return new classToInstantiate(args[0]);
case 2: return new classToInstantiate(args[0], args[1]);
case 3: return new classToInstantiate(args[0], args[1], args[2]);
case 4: return new classToInstantiate(args[0], args[1], args[2], args[3]);
case 5: return new classToInstantiate(args[0], args[1], args[2], args[3], args[4]);
case 6: return new classToInstantiate(args[0], args[1], args[2], args[3], args[4], args[5]);
case 7: return new classToInstantiate(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
case 8: return new classToInstantiate(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7]);
case 9: return new classToInstantiate(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8]);
case 10: return new classToInstantiate(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8], args[9]);
default:
throw new ArgumentError("Unable to instantiate:" + classToInstantiate + ", unsupported number of constructor arguments, received: " + args.join(', '));
}
}
}