Java + Eclipse:存储常量并在运行时调整它们的最佳方法

时间:2013-10-10 15:57:04

标签: java eclipse debugging constants

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

  • 特定类(使用的类型中包含的常量或至少分为类别)
  • 由于编译时常量表,常量的运行时调优(简单static final常量将不起作用)。
  • 常量名称没有字符串文字。我想用我的IDE为我完成常量名称。
  • 如果可能,带有键/值对的外部文件会很好。当引入常量时,我​​将在代码中提供默认值,并且可能会被存储在外部文件中的值覆盖。可以在启动时或通过控制台命令(我已经有控制台)触发更新

工作流程应该是这样的:我正在调试正在运行的应用程序。我将更改一些常量(在代码或外部文件中),触发更新(eclipse热替换或应用内操作)并且常量会立即更改。

任何建议都将受到赞赏。

2 个答案:

答案 0 :(得分:1)

您可能希望了解为处理本地化而设计的一些方法,并根据您的需求进行调整。

这是蓝宝石的一个......

http://git.eclipse.org/c/sapphire/org.eclipse.sapphire.git/tree/plugins/org.eclipse.sapphire.modeling/src/org/eclipse/sapphire/LocalizableText.java

基本思想是你有一些带有注释的静态(但不是最终字段)来提供默认/初始值。您可以在类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 );
    }

    ...
}

答案 1 :(得分:0)

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

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

public static final String USERNAME = "STACK";