gpt4 book ai didi

java - 所有编译时常量都内联吗?

转载 作者:IT老高 更新时间:2023-10-28 20:37:58 29 4
gpt4 key购买 nike

假设我有这样的类(class):

class ApplicationDefs{
public static final String configOption1 = "some option";
public static final String configOption2 = "some other option";
public static final String configOption3 = "yet another option";
}

我的应用程序中的许多其他类都在使用这些选项。现在,我想单独更改其中一个选项并仅部署已编译的类。但是,如果这些字段内联在消费者类中,这将变得不可能,对吧?

是否有任何选项可以禁用编译时常量的内联?

最佳答案

您可以使用 String.intern() 来获得所需的效果,但应该注释您的代码,因为没有多少人知道这一点。即

public static final String configOption1 = "some option".intern();

这将阻止编译时内联。由于它指的是编译器将放置在 perm 中的完全相同的字符串,因此您不会创建任何额外的内容。

作为替代方案,您总是可以这样做

public static final String configOption1 = "some option".toString();

这可能更容易阅读。无论哪种方式,由于这有点奇怪,您应该对代码进行注释以告知维护它的人您在做什么。

编辑:找到另一个提供 JLS 引用的 SO 链接,以获取更多信息。 When to use intern() on String literals

关于java - 所有编译时常量都内联吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/377819/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com