我试图了解Java Iterator
和Iterable
接口
我正在写这堂课
class MyClass implements Iterable<String> {
public String[] a = null;
public MyClass(String[] arr) {
a = arr;
}
public MyClassIterator iterator() {
return new MyClassIterator(this);
}
public class MyClassIterator implements Iterator<String> {
private MyClass myclass = null;
private int count = 0;
public MyClassIterator(MyClass m) {
myclass = m;
}
public boolean hasNext() {
return count < myclass.a.length;
}
public String next() {
int t = count;
count++;
return myclass.a[t];
}
public void remove() {
throw new UnsupportedOperationException();
}
}
}
它似乎正在工作。
我应该有:
Myclass implements Iterable<Stirng>, Iterator<String> {
}
或者我应该把MyClassIterator
外面MyClass
的
class MyClass implements Iterable<String> {
public String[] a = null;
public MyClass(String[] arr) {
a = arr;
}
public MyClassIterator iterator() {
return new MyClassIterator(this);
}
}
public class MyClassIterator implements Iterator<String> {
private MyClass myclass = null;
private int count = 0;
public MyClassIterator(MyClass m) {
myclass = m;
}
public boolean hasNext() {
return count < myclass.a.length;
}
public String next() {
int t = count;
count++;
return myclass.a[t];
}
public void remove() {
throw new UnsupportedOperationException();
}
}
哪一个更好?
你应该几乎 从来没有 同时实现Iterable
,并Iterator
在同一个班。他们做不同的事情。迭代器自然是 有状态的
-当您迭代使用它时,它必须更新其世界观。但是,迭代器仅需要能够创建新的迭代器。特别是,您可能有多个迭代器同时处理同一个原始可迭代对象。
您当前的方法几乎可以-我会更改实现的某些方面,但是就职责分离而言还可以。
我最近在我没有编写的代码中遇到了这个场景,虽然这种方法可能有一些设计上的好处,但我似乎无法从我自己的大脑中挤出这个原理。所以在我看起来很傻之前,我希望这里有一些反馈。 服务接口如下所示: 然后是一个向服务接口添加泛型引用的基类,其中T扩展了服务,但随后整个基类也实现了该接口。类似这样的事情: 你为什么要这么做?我注意到,在实践中,ServiceBase的扩展总是使用与正在声明的类名相同的类名T;所
在Java,你可以做这样的事情: 在Kotlin有可能做同样的事情吗?假设是抽象的,并且不实现
我在同一个活动中使用了两个时间选择器,让用户为特定任务选择开始时间和停止时间,我使用了支持库中可用的DialogFragment类,以向后兼容旧的Android版本。
问题内容: 我想拥有一个在Java中同时实现Map和List接口的对象。这个想法与以下问题类似:Java OrderedMap 我想将名称/值对添加到列表中,并让列表保留序列,但还可以按名称进行查找: 这是问题所在:创建此类时: 我收到一个编译错误: 如果我没有实现Map和List接口,那么有很多Java集合方法无法在此数据结构上使用。 (此外,上面的Java Ordered Map中提出的解决方
我们从应该提供web api服务的项目中删除了核心库:d 如果不可能在同一个项目中使用,那么gateway众所周知的做法应该是怎样的,我应该在每个api微服务前面放一个gateway,还是应该在我的由多个微服务组成的项目中有一个单一的gateway?