我刚刚找到了这个工具,MatJuice,它可以为我节省几天甚至几周的开发时间,但它不能编译。
尽管我对Java一无所知,但它看起来并不那么复杂:这两个错误都位于同一个文件、同一个函数中,而且函数看起来像是通用的(findParent),所以也许Java程序员马上就会知道它是怎么回事。
一年多前在here上发布了一个突破性的问题,似乎作者不愿意纠正它。这就是我在这里提问的原因。
下面是两个错误:
[javac] /home/geoffrey/mclab-core/languages/Natlab/src/natlab/utils/NodeFinder.java:62: error: cannot find symbol
[javac] .filter(n -> clazz.isInstance(n) || n.getParent() == null)
[javac] ^
[javac] symbol: method getParent()
[javac] location: variable n of type Object
[javac] /home/geoffrey/mclab-core/languages/Natlab/src/natlab/utils/NodeFinder.java:66: error: incompatible types: Object cannot be converted to T
[javac] .orElse(null);
[javac] ^
[javac] where T is a type-variable:
[javac] T extends Object declared in method <T>findParent(Class<T>,ASTNode<?>)
Bellow是相关的代码片段(错误发生在此摘录中的第3行和第7行)
public static <T> T findParent(Class<T> clazz, ASTNode<?> node) {
return Stream.iterate(node, ASTNode::getParent)
.filter(n -> clazz.isInstance(n) || n.getParent() == null)
.findFirst()
.filter(clazz::isInstance)
.map(clazz::cast)
.orElse(null);
}
完整的文件是here (文件中有一些有用的注释)以及存储库的其余部分。
我自己也试过,但由于对Java一无所知,它太抽象了,我无法调试。
转载请注明出处:http://www.owntest.net/article/20230526/1643938.html