Java 如何与继承一起使用iterable
我有两个名为Java 如何与继承一起使用iterable,java,inheritance,iterator,wildcard,iterable,Java,Inheritance,Iterator,Wildcard,Iterable,我有两个名为Cards和ActionCard的类,分别实现ICard和ICard,它们包含在两个不同的模块中-模块A包含Cards和ActionCard类,并且取决于模块B,其中包含ICard和ICard接口 我试图迭代模块a中包含ActionCard列表的Cards类,并迭代模块B中的ICards接口 我试图用方法Iterator Iterator()将Cards类定义为Iterable,但由于ActionCard在模块B中未知,我想将ICards定义为Iterable,这意味着方法Itera
Cards
和ActionCard
的类,分别实现ICard
和ICard
,它们包含在两个不同的模块中-模块A
包含Cards
和ActionCard
类,并且取决于模块B
,其中包含ICard
和ICard
接口
我试图迭代模块a
中包含ActionCard
列表的Cards
类,并迭代模块B
中的ICards
接口
我试图用方法Iterator Iterator()
将Cards
类定义为Iterable
,但由于ActionCard
在模块B
中未知,我想将ICards
定义为Iterable
,这意味着方法Iterator()卡中的无法返回迭代器
,因为它与迭代器
的类型完全不同(我不想在模块a
中更改为ICard
,因为我需要使用操作卡
)
我尝试使用通配符来定义Iterable如何:
public interface ICards<T> extends Iterable<T> {
// ..some methods
}
公共接口ICards扩展了Iterable{
//…一些方法
}
及
公共类卡实现iCard{
私有列表m_卡=新的ArrayList();
@凌驾
公共迭代器迭代器()
{
返回m_Cards.iterator();
}
}
由于您的Cards
类总是创建ActionCard
的列表
,并迭代该列表
,因此定义它以实现iCard
是有意义的
由于Cards
实现了ICards
,它扩展了Iterable
,您不必明确声明Cards
实现了Iterable,我不明白您为什么要为ArrayList创建Cards
包装器。为什么不直接使用ArrayList
或ArrayList呢?可能还不清楚,但是Cards有很多与我的问题无关的方法和成员,因此它是一个类。但它仍然只是包装了ArrayList的功能。也许让卡扩展ArrayList会更容易首先,谢谢,它很有效。第二,因为我想迭代实现ICard的对象集合,所以我使用了约束并将其定义为:public interface ICards extensed Iterable{/..some methods}
public interface ICards<T> extends Iterable<T> {
// ..some methods
}
public class Cards implements ICards<ActionCard> {
private List<ActionCard> m_Cards = new ArrayList<>();
@Override
public Iterator<ActionCard> iterator()
{
return m_Cards.iterator();
}
}