gpt4 book ai didi

Java:迭代器类型(接口(interface)/实现类)之间的转换?

转载 作者:行者123 更新时间:2023-11-30 04:47:28 25 4
gpt4 key购买 nike

在类里面,我有一个容器:

public class MyClass implements MyClassInterface {
private LinkedList<OtherClass> list; //Need to use 'OtherClass' instead of 'OtherClassInterface here
@Override
public Iterator iterator() {
return list.iterator; //Problem!
}
}

界面:

public interface MyClassInterface {
//Is
public Iterator iterator();
//Should be
public Iterator<OtherClassInterface>();
}

话又说回来,OtherClass还有一个接口(interface)OtherClassInterface 。我只希望那些使用代码的人可以使用接口(interface)。问题是我想使用完整的 OtherClass里面MyClass但传递一个迭代器 LinkedList<OtherClassInterface>MyClassInterface.iterator() 的调用者.

我无法转换现有的 LinkedList<OtherClass>LinkedList<OtherClassInterface>里面MyClass返回所需的迭代器。

遇到这种情况该如何处理?

编辑

我想要这种行为的原因

对于另一位开发人员,我想提供两个接口(interface):第一个接口(interface)使他能够访问更高的数据结构,其中包含较低的数据结构,他应该通过第二个接口(interface)访问该数据结构。在上层接口(interface)的实现类中,我直接使用下层数据结构的类型,而不是通过下层接口(interface)。

如上所述,另一个开发人员想要使用这两个接口(interface)。在较高的接口(interface)上,我想提供一个迭代器,可以访问较低接口(interface)的元素,但不能访问实现该接口(interface)的类。

其他需求

我还希望返回的迭代器是“Iterable”,即这样我就可以使用“foreach”构造。 *waxwing*s 解决方案也可以实现这一点吗?如果可能的话,我不想实现一个自己的迭代器 - 对我来说这似乎没有必要,因为我只想在接口(interface)的元素而不是实现类上提供一个迭代器。

最佳答案

您可以编写自己的 Iteratornext() 返回时在接口(interface)和具体实现之间进行转换的实现

转换问题List<OtherClass>List<OtherClassInterface>是没有办法阻止转换结果的用户输入 OtherClass 以外的内容对象添加到列表中(当然这些元素也必须实现 OtherClassInterface)

关于Java:迭代器类型(接口(interface)/实现类)之间的转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10635171/

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