我试图实现类似Guava的nullToEmpty之类的东西,而不会对方法进行两次调用。
我原来的电话是:
return ((getElement(locator) != null) ? getElement(locator).getText() : StringUtils.EMPTY;
我试图缩短为:
return ((Element element = getElement(locator)) != null) ? element.getText() : StringUtils.EMPTY;
但我得到Element cannot be resolved to a variable
,element cannot be resolved
和Syntax error on token "element", delete this token
。
这有效:
Element element;
return ((element = getElement(locator)) != null) ? element.getText() : StringUtils.EMPTY;
在表达式中同时声明和分配有什么问题?
答案 0 :(得分:3)
因为它不是一个块,你不能在括号中声明一个变量,除非它是一个for
循环。此外,您的测试应该是!= null
,或者调用getText()
会抛出NullPointerException
。
Element element = getElement(locator);
return (element != null) ? element.getText() : StringUtils.EMPTY;
答案 1 :(得分:1)
您无法执行此操作,因为在您解决条件语句后element
已超出范围。