gpt4 book ai didi

java - 什么时候需要使用implements Iterable

转载 作者:行者123 更新时间:2023-11-30 05:38:01 25 4
gpt4 key购买 nike

我正在编写一个泛型类 SortedGroup,以便泛型类型 implements Comparable<T> 。类签名是

public class SortedGroup<T extends Comparable<T>> .

我需要编写一个返回泛型类型迭代器的方法。

问题是:

是否需要用implements Iterable编写类签名,例如:

public class SortedGroup<T extends Comparable<T>> implements Iterable<T>

或者我可以不用implements Iterable<T>来写它?

我不清楚,因为我在使用或不使用

时都没有遇到任何错误

implements Iterable<T> .

编辑: 该类使用 ArrayList 来存储数据。所以我使用它的迭代器方法。

下面写的方法正确吗?

public Iterator<T> iterator()
{
return list.iterator();
}

最佳答案

简单:如果您希望您的“集合”可以像任何其他标准 java 集合一样循环,那么您最好有 implements Iterable<T>在你的类里面。

重点是:拥有该界面允许用户执行以下操作:

for (Bar foo : someSortedGroupOfBars) {

换句话说:只有当您绝对确定您的组永远不会使用“标准”Java 模式进行迭代时,您才会考虑在实现某种“容器”时不实现该接口(interface)。

您甚至可以更进一步,决定是否实现 Collection或者更专业的界面,例如 List说得通!这样做当然需要您实现更多方法(恕我直言,这对于“组容器”来说都有意义)。

除此之外,这主要取决于您的背景。如果您正在为一项非常具体的任务(可能是学校的练习)编写本类(class),那么:编写满足您需要的最少代码量。那么,实现您不需要的接口(interface)可能是正确的做法。但是,一旦这个类的存在“不止于此”,那么实现该接口(interface)就是一个非常自然和直接的想法。

并回答另一个问题:“委托(delegate)”给底层 ArrayList 的迭代器是一种有效的方法。

关于java - 什么时候需要使用implements Iterable<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56240193/

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