小编R R*_*Ree的帖子

如何使用子类或超类定义Java函数的返回类型和参数?

例如,如果我有类似的功能

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)

java generics inheritance list arraylist

5
推荐指数
1
解决办法
95
查看次数

标签 统计

arraylist ×1

generics ×1

inheritance ×1

java ×1

list ×1