了解代码流:Diamond运算符和匿名类

问题描述

我从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 (将#修改为@)