在Java中重用字符串

我有这样一个通用的实用程序类,它看起来像这样:

public final class Utils {

    public static <T> T forNull(T object, String objectName) {
        if (object == null)
            throw new NullPointerException(String.format(""%s" must not be null", objectName));
        return object;
    }

}

...我想知道是否值得将这个字符串 ->""%s" must not be null"移出方法并将其声明为静态最终。该方法将经常使用。

回答

Java 文字字符串已经被 JVM 缓存了。不管这个方法执行几次,通过这些执行使用的字符串对象都是一样的,所以性能不会成为问题。

如果您要在多个地方使用该字符串,我建议将此类字符串移动到静态字段中。这简化了维护工作,因为您可以在一个地方编辑文本,而不是使用所有方法。


回答

字符串常量已经自动进行了重复数据删除(称为“实习”)。如果在不同的上下文中重复使用相同的消息,那么将其外部化可能是有意义的,但是您必须平衡它与将其格式与其本地上下文分开。

但是,我将为您的问题提供一个框架挑战:根本没有这种方法。通常推荐的方法不是主动测试 null,而是让 NPE“自然”发生。或者,Objects.requireNonNull已经存在,无需重新发明。


以上是在Java中重用字符串的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>