valueOf()可以根据Java约定返回null吗?

时间:2011-03-17 15:53:51

标签: java naming-conventions

在某些情况下命名一个可能会返回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。

5 个答案:

答案 0 :(得分:5)

因为它实际上不是构造函数,所以你可以随心所欲地做任何事情。但是如果你担心你的来电者,你可能想考虑抛出NullPointerException而不是返回null

答案 1 :(得分:2)

我认为使用这样的方法返回null没有问题,被授予您明确记录它将在Javadoc摘要中执行此操作的情况,以便使用此方法的任何人能够理解它什么时候会发生。

还有一点点迂腐:bar()不是构造函数。

答案 2 :(得分:2)

在这种情况下,我会将参数限制为null。如果它导致返回null对象,那么它是错误的。所以我不会因为问题valueOf()返回null而烦恼我的自我。在null参数的情况下,我会使用IllegalArgumentExceptionNullPointerException

答案 3 :(得分:1)

一般来说,我投赞成票。根据我的经验,valueOf方法在不知道如何转换输入时抛出异常。如果输入为null,则可以返回null,但这是我能看到的唯一情况。

答案 4 :(得分:1)

对我来说,最好的做法是如果值为NPE则抛出null,如果出现其他错误则抛出其他一些面向问题的异常。这背后的主要动机是null更多的是“未知”。我通常希望instanceof测试在valueOf成功时返回true。 null不是这种情况。