Вы просто делаете дженерики немного неправильно. Добавьте бит ? extends
, и это позволит переданному списку содержать суперкласс или любой из его подклассов.
setSuperClassList(List<? extends Superclass>)
Это называется установкой верхней границы для дженериков.
В заявлении List<Superclass>
говорится, что список может содержать только SuperClass
. Это исключает любые подклассы.