我有一个我无法理解的问题。
有一个for-each循环,调试器告诉我列表中有值,但具体的body-loop表示当前元素为null。
怎么会这样?
public void test(){
List cs = ["a"];
for(String c:cs){
print c; // but c is null(sais the debugger)! The console shows "null".
}
}
编辑:另一个障碍是:
List<StaticSubFoobary> getBackendSubFoobaryList(List<String> electedSubFoobaryIds) {
List<StaticSubFoobary> subFoobaries = getStaticBackendFoobaryList()?.collect { StaticMainFoobary cat -> cat.backendSortedSubFoobaries }?.flatten()
List<StaticSubFoobary> electedSubFoobaries = subFoobaries.findAll { it.numericId in electedSubFoobaryIds}
return electedSubFoobaries
}
扔掉NPE 但是:
List<StaticSubFoobary> getBackendSubFoobaryList(List<String> electedSubFoobaryIds) {
List<StaticSubFoobary> subFoobaries = getStaticBackendFoobaryList()?.collect { StaticMainFoobary cat -> cat.backendSortedSubFoobaries }?.flatten()
List<StaticSubFoobary> electedSubFoobaries = []
for(StaticSubFoobary it:subFoobaries)
if(it.numericId in electedSubFoobaryIds)
electedSubFoobaries.add(it)
return electedSubFoobaries
}
不!
答案 0 :(得分:2)
但具体的body-loop表示当前元素为null
不,不。如果在Groovy控制台中运行此代码,则断言将通过:
List cs = ["a"];
for(String c:cs){
assert c == 'a'
}
相反,如果在控制台中运行此代码,则断言失败
List cs = ["a"];
for(String c:cs){
assert c == null
}
最终证明列表的第一个元素是“a”而不是null
答案 1 :(得分:0)
尝试将GroovyString强制转换为String可能是个问题。尝试使用单引号字符串文字。
答案 2 :(得分:0)
我终于再次检查了该项目并像以前一样构建它。
问题消失了,不知道为什么,但它现在有用了!
我只需将所有更改复制到新工作区并继续开发。
让这种解决方法成为体验的一部分。