所以我有一个课程" TestClass"
class TestClass {
public abstract class Test {
private String _string
public Test(String string) {
_string = string
}
private TreeSet<List<String>> _rows = new TreeSet<List<String>>()
public Collection<List<String>> getRows() {
return _rows
}
public abstract void processObject(XmlObject object)
}
private List<Test> list = [
new getData() //long list of classes
]
//this method is supposed to to through the list and return "_rows" which doesnt seem to work
public List<Test> returnRows() {
list.each { Test test ->
return test.getRows()
}
}
public getData extends Test {
public getData() {
super('test')
}
@Override
public void processObject(XmlObject object) {
getRows().add(['test'])
}
}
public TestClass() {
//constructor
}
}
我在另一个文件中调用TestClass:
class AnotherClass {
public void run() {
def testClass
testClass = getClass().classLoader.parseClass(new File(classpath)).newInstance()
testClass.returnRows().each { //it is failing here saying that testClass.returnRows() is null
}
}
但是testClass.returnRows()为null
我不确定方法returnRows()是否没有返回任何内容,或者我是否没有正确地实例化该类
答案 0 :(得分:0)
您的代码returnRows()
永远不会返回任何有关null
的原因的数据。
重写方法returnsRows()
代码如下:
public List<Test> returnRows() {
def returnListVariable=[]
list.each { Test test ->
//test.getRows()
returnListVariable << test.getRows()
}
return returnListVariable
}
答案 1 :(得分:0)
方法each
是一个不返回任何数据的void方法。
在您的情况下,当您调用each
方法时,您将匿名函数传递给它并应用返回以退出此函数。
改为使用方法collect
,它必须返回收集的元素列表。
public List<Test> returnRows() {
return list.collect({ Test test ->
return test.getRows()
})
}