在某些情况下命名一个可能会返回valueOf
的命名构造函数null
是否可以接受?
例如,bar()
是一个命名构造函数,如果参数为null
,则可以返回null
。
class Foo {
public static Foo bar(String value) {
if (value == null)
return null;
else
return new Foo();
}
}
是否反对Java约定而不是命名为valueOf()
?如果没有,我会把它转移给帮手。
编辑:此方法是一个帮助程序,如果值为null,则必须返回null。
答案 0 :(得分:5)
因为它实际上不是构造函数,所以你可以随心所欲地做任何事情。但是如果你担心你的来电者,你可能想考虑抛出NullPointerException
而不是返回null
。
答案 1 :(得分:2)
我认为使用这样的方法返回null
没有问题,被授予您明确记录它将在Javadoc摘要中执行此操作的情况,以便使用此方法的任何人能够理解它什么时候会发生。
还有一点点迂腐:bar()
不是构造函数。
答案 2 :(得分:2)
在这种情况下,我会将参数限制为null
。如果它导致返回null
对象,那么它是错误的。所以我不会因为问题valueOf()
返回null
而烦恼我的自我。在null参数的情况下,我会使用IllegalArgumentException
或NullPointerException
。
答案 3 :(得分:1)
一般来说,我投赞成票。根据我的经验,valueOf
方法在不知道如何转换输入时抛出异常。如果输入为null,则可以返回null,但这是我能看到的唯一情况。
答案 4 :(得分:1)
对我来说,最好的做法是如果值为NPE
则抛出null
,如果出现其他错误则抛出其他一些面向问题的异常。这背后的主要动机是null
更多的是“未知”。我通常希望instanceof
测试在valueOf
成功时返回true。 null
不是这种情况。