例如,如果我有类似的功能
public List<E> sort(ArrayList<E> list) {...}
Run Code Online (Sandbox Code Playgroud)
我的同学告诉我,我们应该使用List作为返回类型,因为返回类型应该尽可能广泛.他的理由是,如果我们当前返回一个ArrayList,我们可以更改为返回LinkedList或其他类型.它增加了灵活性.
但是我们收到的函数参数应尽可能窄.这是因为我们可能需要在sort函数中使用一些只由ArrayList实现的函数.
所以我的问题是:是否有任何广泛接受的指南/最佳实践建议函数的形式参数应尽可能窄?如果不是,反对的主要论点是什么?
=============================================
只是为了澄清这一点.
public List<E> sort(ArrayList<E> list) {...}
Run Code Online (Sandbox Code Playgroud)
这只是一个例子,List和ArrayList可以被任何其他Super Class和SubClass替换.我们假设SubClass中只存在一些函数.
public <E> SuperClass<E> sort(SubClass<E> object) {...}
Run Code Online (Sandbox Code Playgroud)