Polymorphism is not a phenomena which can be allowed or prohibited. Generics cannot change the situation, because they have nothing to do with polymorphism, because they have nothing to do with inheritance, "virtual" and late binding. Generics are static; any type which can be instantiated during run-time is not generic; it is instantiated into a final type before an instance (object) is constructed. Generic types and final types created out of generics are always the compile-time types. In contrast, all "virtual" behavior and late binging is played on instances and their run-time types, during run-time.
This way, generics and polymorphism are parallel phenomena which do not intercept; therefore, they can be freely combined in any thinkable ways.
A code sample? There are too many samples around.
Here, you can find a conceptual example, good for nearly all object-oriented language:
http://en.wikipedia.org/wiki/Subtype_polymorphism#Examples[
^].
See also
http://en.wikipedia.org/wiki/Polymorphism_%28computer_science%29[
^].
Why knows how many samples you can find in tutorials:
http://docs.oracle.com/javase/tutorial/java/IandI/polymorphism.html[
^],
http://home.cogeco.ca/~ve3ll/jatutor5.htm[
^],
http://www.javaworld.com/javaworld/javatips/jw-javatip30.html[
^],
http://www.javaworld.com/javaworld/jw-04-2001/jw-0413-polymorph.html[
^].
After all, Google for more.
—SA