遍历JavaFileObjects进入无限循环

时间:2018-12-01 09:57:40

标签: java api loops for-loop compiler-construction

我正在尝试使用Java编译器api。首先,我有运行良好的“ mytest.java”。然后我有这段代码:

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
String[] as = new String[]{"mytest.java"};
List<String> list = Arrays.asList(as);
Iterable fileObjects = fileManager.getJavaFileObjectsFromStrings(list);
for (Iterator it = fileObjects.iterator(); it.hasNext(); ) {
    //RegularFileObject str = (RegularFileObject) it.next();
    System.out.println("for loop");
}

(1)我期望for循环将能够迭代所有JavaFileObjects。就我而言,它只有一个文件,对吗?但是运行该程序,它会不停地打印很多“ for循环”。我希望它只打印一次

那这里怎么了?

(2)RegularFileObject不是公共类,那么如何访问这些文件对象的内容?

谢谢。

1 个答案:

答案 0 :(得分:3)

迭代器“ it”在for循环中未更新/递增。