> main advantage is the ability to assign to List<J> variable.

Not sure I see the distinction - the same thing applies to setListData(List<?>).

> if we use List<?> as the return type, this can be done with cast, but if we 
> use List<Object> as return type, cast cannot be applied also. 

Right, I had forgotten about that. That's why it currently returns List<?>. 
Returning List<T> would simply make the cast unnecessary.

Reply via email to