There's no generic information available at run-time...but the compiler isn't running at run time. It runs at compile time (hence the name!). The compiler has full access to all the information in the source code. So the compiler knows you're assigning a non-generic reference to a generic one, and it knows that isn't safe.
Run away! Run away! Here, take this tiny ad with you: