Remember that your ? super Horse1 means "Horse1 or any superclass", which includes Object. So when you try to iterate over it, the only reference that you can guarantee will work is Object. Try this instead:
You might have assigned a List<Object> to your List<? super Horse>, no? There might have been Objects in there, or any supertype of Horse, before you assigned it. Why would you assume that Only subtypes of Animal can be in this Collection? The compiler will make no such assumptions, so you'll need to explicitly cast any Object you pull out of this Collection.
So, knowing this, how will you iterate through your List?