问题描述
我从Java 9了解到,只有在类型参数可推断的情况下,才可以在创建匿名类时使用菱形运算符
在那之后,我不理解这段代码,它来自Java通用编程理论
import java.util.Iterator;
import java.util.NoSuchElementException;
public class Main {
public static <T> Iterable<T> getIterable(T... elems) {
return new Iterable<T>() {
@Override
public Iterator<T> iterator() {
return new Iterator<>() {
int i = 0;
@Override
public boolean hasNext() {
return i < elems.length;
}
@Override
public T next() {
if(!hasNext()) throw new NoSuchElementException();
return elems[i++];
}
};
}
};
}
public static void main(String[] args) throws Exception{
String[] path = {"UP","DOWN","LEFT","RIGHT"};
Iterable<String> ipaths = getIterable(path);
for (String apath : ipaths) {
System.out.println(apath);
}
}
}
我不知道这段代码是如何工作的,我尝试使用调试器,但是对我来说仍然很奇怪,IntellijIDEA中的第一个“ return new Iterator()”是灰色的,好像被当作注释一样对待>
我对匿名类的了解只是这样的简单创建
Example ex = new Example() {
//fields
// no constructor
//method,overriden method from the superclass
};
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)