假设我有一个提示,要求用户输入内容。如果用户与我的规范不匹配,else
块将返回null
。这是不好的做法吗?如果是这样,我怎么能在if
/ else
块的范围内重复提示?
if( foo.equalsIgnoreCase( "y" ) ) { return bar[x][y]; } else if( foo.equalsIgnoreCase( "n" ) ) { return bar[x++][y]; } else { return null; }
答案 0 :(得分:1)
null
是用于此目的的良好值。这不是一个坏习惯。您需要使用某些内容,而null
具有“未定义”的语义。
你的另一个选择是返回用户输入的内容,然后测试“如果它不是'y'或者它不是'n'然后再问”,但实际上,更复杂的是只测试类似!value。< / p>
如果用户未在javadocs中输入'y'或'n',请务必记录您的方法“将返回null。
答案 1 :(得分:1)
null
作为返回值肯定不是不良做法。在您的情况下,它是否是正确的选择取决于方法和类接口的其余部分。
答案 2 :(得分:-1)
我认为定义代表第3个选项的常量会更好。
您的源代码将更易于阅读。
如果你想将它设置为null
那很好,但我建议不要这样做,因为这可能会让你在以后遇到NullPointerException
问题的可能性。
出于这个原因,我考虑在许多情况下退回null
糟糕的做法。
您可以在此处详细了解:https://stackoverflow.com/a/1274822/383414(有人将此问题标记为可能重复)