Это зависит от того, что вы хотите сделать со списком впоследствии.Если вы просто собираетесь читать из него, вы можете объявить свой метод следующим образом:
setData(ArrayList<? extends SuperType> list)
Вы не можете ничего добавить в этот список, потому что вы не будете знать, что ?
является.Другой вариант - создать копию при вызове вашего метода:
List<SubType> subtypeList = ...;
setData(new ArrayList<SuperType>(subtypeList));