以下代码是在一行中检查null
两次以初始化final
变量的最佳方法吗?
final String textValue = text != null ? text.getText() != null ? text.getText() : "" : "";
答案 0 :(得分:7)
好吧,我可能会使用&&
条件的单个条件:
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()
是一个问题取决于您的方案 - 在某些情况下,这将是一个坏主意,您应该重新构建代码以避免它。我们无法确定,但值得考虑。
答案 1 :(得分:3)
你可以这样做:
final String textValue = (text != null && text.getText() != null) ? text.getText() : "" ;
答案 2 :(得分:0)
我不确定你的意思是什么“最好”(大多数程序员友好?执行效率最高?)
但程序员友好的替代方案可能是:
final String textValue = (text != null && text.getText() != null) ? text.getText() : "";
答案 3 :(得分:0)
我认为这条线在方法的某个地方。所以这个会更具可读性:
String value = "";
if (text != null && text.getText() != null) {
value = text.getText();
}
final String textValue = value;