以下代码是在一行中检查null
两次以初始化final
变量的最佳方法吗?
final String textValue = text != null ? text.getText() != null ? text.getText() : "" : "";
好吧,我可能会使用带有条件的单个条件&&
:
final String textValue = text != null && text.getText() != null ? text.getText()
: "";
如果您发现需要在多个地方执行此操作,您可能希望将其包装在一个方法中:
// We don't know what the type of text is here... adjust appropriately.
public static String getTextOrDefault(TextBox text, String defaultValue)
{
return text != null && text.getText() != null ? text.getText()
: defaultValue;
}
或调整以避免getText()
多次调用:
// We don't know what the type of text is here... adjust appropriately.
public static String getTextOrDefault(TextBox text, String defaultValue)
{
if (text == null)
{
return defaultValue;
}
String textValue = text.getText();
return textValue != null ? text.getText() : defaultValue;
}
然后你可以简化你的变量声明:
final String textValue = SomeHelper.getTextOrDefault(text, "");
请注意,是否text.getText()
多次调用是一个问题取决于您的方案 - 在某些情况下这将是一个坏主意,您应该重组您的代码以避免它。我们无法确定,但值得考虑。
你可以这样做 :
final String textValue = (text != null && text.getText() != null) ? text.getText() : "" ;
我不确定您所说的“最佳”是什么意思(对程序员最友好?最有效的执行?)
但程序员友好的替代方案可能是:
final String textValue = (text != null && text.getText() != null) ? text.getText() : "";
我假设这条线在方法的某个地方。所以这个将更具可读性:
String value = "";
if (text != null && text.getText() != null) {
value = text.getText();
}
final String textValue = value;