gpt4 book ai didi

java - 列表应该如何转换为具体的实现?

转载 作者:行者123 更新时间:2023-12-02 08:19:08 24 4
gpt4 key购买 nike

假设我正在使用一个我不知道其源代码的库。它有一个返回列表的方法,如下所示:

public List<SomeObj> getObjs() { ... }

我想知道这是否是一个好主意:

ArrayList<SomeObj> objs = (ArrayList<SomeObj>) getObjs();

例如,如果 getObjs() 中 List 的具体实现是一个 LinkedList 那么是否会存在某种类型差异?

最佳答案

不,这不是一个好主意。您应该始终使用接口(interface) (List) 来声明列表变量,除非您出于某种原因需要 ArrayList 的特定行为。
另外,如果这样做,您需要真正确定返回的列表是ArrayList。在这种情况下,getObjs() 的 promise 约定只是返回类型是某种List,因此您不应该假设任何其他内容。即使现在返回的 ListArrayList ,也没有什么可以阻止 getObjs() 的实现者稍后更改 的类型返回列表,这会破坏您的代码。

关于java - 列表应该如何转换为具体的实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11867217/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com