Java+;Eclipse:存储常量并在运行时对其进行调优的最佳方法

Java+;Eclipse:存储常量并在运行时对其进行调优的最佳方法,java,eclipse,debugging,constants,Java,Eclipse,Debugging,Constants,我正面临一个有趣的问题。我正在用Java开发一个游戏,我想知道存储常量的最佳方法。我想实现以下几点: 类特定的(使用类型中包含的常量,或至少划分为类别) 常量的运行时调优(由于编译时常量表的原因,简单的静态最终常量将不起作用) 常量名称没有字符串文字。我想使用我的IDE为我完成常量名称 如果可能的话,使用键/值对的外部文件会更好。当引入常量时,我将在代码中提供一个默认值,它可能会被存储在外部文件中的值覆盖。更新可以在启动时触发,也可以通过控制台命令触发(我已经有了控制台) 工作流应该是这样的

我正面临一个有趣的问题。我正在用Java开发一个游戏,我想知道存储常量的最佳方法。我想实现以下几点:

  • 类特定的(使用类型中包含的常量,或至少划分为类别)
  • 常量的运行时调优(由于编译时常量表的原因,简单的
    静态最终
    常量将不起作用)
    
  • 常量名称没有字符串文字。我想使用我的IDE为我完成常量名称
  • 如果可能的话,使用键/值对的外部文件会更好。当引入常量时,我将在代码中提供一个默认值,它可能会被存储在外部文件中的值覆盖。更新可以在启动时触发,也可以通过控制台命令触发(我已经有了控制台)
工作流应该是这样的:我正在调试正在运行的应用程序。我将更改一些常量(在代码中或外部文件中),触发更新(eclipse热替换或应用程序内操作),然后立即更改常量


如果您有任何建议,我们将不胜感激。

在大型项目中存储常量的最佳方法是创建一个单独的文件,文件名中包含常量,例如:“StackOverflowConstants.java”

将此文件中的常量用作:-

public static final String USERNAME = "STACK";

您可能想看看为处理本地化而设计的一些方法,并根据您的需要调整其中的一种

这里有一个来自Sapphire

基本思想是,您有一些带有注释的静态(但不是最终字段)来提供默认值/初始值。在类init期间执行一个方法,该方法通过首先查看属性文件并返回到注释来填充这些静态

看起来是这样的:

public class NumericRangeValidationService
{
    @Text( "{0} is smaller than the minimum allowed value ({1})" )
    private static LocalizableText smallerThanMinimumMessage;

    @Text( "{0} is larger than the maximum allowed value ({1})" )
    private static LocalizableText largerThanMaxiumMessage;

    static
    {
        LocalizableText.init( NumericRangeValidationService.class );
    }

    ...
}

你似乎不清楚常数的概念。您是否在考虑全局参数或属性?您是对的。与其说是常数,不如说是参数。但当它调整到正确的值时,它是一个常数。如果它可以改变,它就不是一个常数。重新考虑你的措辞——你只会把其他人弄糊涂。请阅读OP问题中的这一部分:常量名称没有字符串文字谢谢。这是我现在正在尝试的一种概念。这种方法唯一的缺陷是可能会忘记静态init部分。我不确定,但可能没有办法避免。可惜没有注释构造函数。