Problems with generating subclasses

I have an abstract class “Spell” and lets all spells extend that one. This is for the sake of being able to keep different spells in a single array (like, if your character knows 3 spells and he learns a new one I don’t want to have to rewrite the code to make it possible for him to have that).
Now, the subclasses of Spell has two “states” (I think you can call it that); Active & Inactive. In short, the player has one of every type of Spell he can use in his Array as an Inactive, but when he casts a spell I create a new instance of this spell, completely unrelated to the original Inactive one, which is then handled by the “Active Spells Handler”.
The problem I have is when it comes to creating a new spell, I don’t know how to make it create the same type of class. If I cast FireBlast I want to create a new FireBlast Object but with the same row of code I want to be able to create an IceLance Object if that was the spell I tried to cast. I know how to check if an object of type Spell is an instance of FireBlast, but I’d rather not have to use a long set of if:s to first find the type of subclass it is and then make a direct creation of this subclass.

I hope you can understand what I’m trying to say