有没有办法在groovy中引用objList.addListener(e->{
if(e.wasAdded)
{
if(myObjectList.size>=e.getFrom())
myObjList.Add(new myObject(objList.get(objList.size-1)));
else{
myObjList.Add(e.getFrom(),new myObject(objList.get(e.getFrom()));
}
}
if(e.wasRemoved)
{
myObjectList.Remove(e.getFrom());
}
if(e.wasPermutated)
{
//handle this as well
}
});
语句的第一部分?
例如,有没有办法缩短
?:
类似
def time = map.get('time') ? map.get('time').get('milliseconds') : null
,其中"它"引用命令的第一部分?
答案 0 :(得分:1)
听起来你只想使用safe navigation operator:
def time = map.get('time')?.get('milliseconds')
如果map.get('time')
返回空引用,则整个表达式的结果将为null,并且get('milliseconds')
不会被调用。
答案 1 :(得分:1)
您可以使用安全导航操作员 http://docs.groovy-lang.org/latest/html/documentation/index.html#_safe_navigation_operator
所以你可以这样做:
def time = map?.get('time')?.get('milliseconds')
答案 2 :(得分:1)
您可以使用safe navigation operator:
def time = map.get('time')?.get('milliseconds')
如果.get('milliseconds')
的结果为map.get('time')
,则可确保不会调用null
。在这种情况下,表达式的总体结果也是null
。
答案 3 :(得分:0)
这很简单:
map.time?.milliseconds