gpt4 book ai didi

java - 当将数据结构声明为它的接口(interface)然后转换它时,Java 会在某处存储详细信息

转载 作者:行者123 更新时间:2023-11-30 07:02:44 25 4
gpt4 key购买 nike

我在很多地方看到建议在使用 Collection 或 Lists 或 Hashes 时将它们声明为接口(interface),然后在实例化时使用您想要的特定结构。

例如:

Map<K,V> map;
...
map = new LinkedHashMap<K,V>();

List<K> list;
...
list = new ArrayList<K>();

我的问题是,Java 是否在某处“存储了实现细节”。我问的原因是我有这个类,我正在使用 HashMap。所以我将它的成员声明为一个 Map 并在初始化它时,基于一些额外的变量,我将它初始化为一个具有特定大小的 HashMap。我也有 setter/getter 。

现在在另一个类中,我可以访问该类,所以当我需要 map 时,我只需调用 getter 即可获取它。所以我将它转换为 HashMap。

HashMap<K,V> hashMap = (HashMap) class.getMap();
for(Map.Entry<K,V> entry : hashMap.entrySet())
...

它还记得它是什么吗?如果我决定订单对我很重要并将其更改为使用 LinkedHashMap,它是否仍会使用 FIFO 订单进行迭代。如果我每次在项目的其他部分使用该类时都必须将它强制转换为某个结构,那么在使用时声明它不是更好吗?

最佳答案

您不必强制转换为 HashMap。

这个有效:

for (Map.Entry<K,V> entry : class.getMap().entrySet ())

关于java - 当将数据结构声明为它的接口(interface)然后转换它时,Java 会在某处存储详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28883715/

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