我想在我的java程序中设置一个常量,但我不希望它在代码中,而是作为编译参数。我怎样才能做到这一点 ?作为一个清单属性?我该如何恢复价值?
重点是运行自动多重编译来改变这个常量。
我来自C世界,所以也许这在Java中是一个坏主意。我对所有建议持开放态度。
应用程序:我在哈希中包含了一个盐,我想轻松更改盐。
答案 0 :(得分:1)
这种配置通常存储在配置文件(通常是XML或属性)中,然后在运行时读取。您可以使用自定义构建脚本在构建时自动生成配置文件,也可以手动将文件放入。
另一种选择是使用命令行参数或环境变量来传递配置。文件方法可能是最简单和最强大的。
答案 1 :(得分:1)
您可以使用命令行中指定的系统属性:
java -Dmyprop=myvalue yourapp
然后在您的代码中访问它:
System.getProperty("myprop")
像其他评论所说的那样,除非你想进入字节码操作,否则无法注入真正的代码常量。如果你想去字节码操作路线你可以看看AST变换(java或groovy)或像Javasist这样的项目,但那些将是相当复杂的解决方案。