在scala注释中使用常量的最佳实践

我使用tapestry 5作为我选择的Web框架。 Tapestry允许我在configure类中定义符号并将符号注入其他组件。

例如,

公共接口SymbolConstants {
   static String DEFAULT_TIMEOUT_KEY =“default.timeout”; 
 }

公共类AppModule {
    void contributionApplicationDefault(Configuration conf){
        conf.add(SymbolConstants.DEFAULT_TIMEOUT_KEY,“10”);
    }
 }

公共类MyComponent {
   @Symbol(SymbolConstants.DEFAULT_VALUE_KEY)
  私人长时间超时;
 }

定义静态常量并将其用作注释值的能力为我提供了编译时检查。

我想知道如何定义常量并将它们用作scala注释的值。 如果不是,那么定义/限制我们可以为scala中的注释分配的值的最佳做法是什么。

需要’final’关键字使编译器像在Java中一样发出它。 例如,

object Foo { final val MY_SYMBOLIC_CONSTANT="whatever" } 

似乎,否则,你只能在引擎盖下获得一个不可静态计算的存取方法。

似乎没有可能w / scala版本2.8.1.final,2.8.2.final或2.9.1.final(结果与所有相同):

 object Constant { val UNCHECKED = "unchecked" } class Test { @SuppressWarnings(Array(Constant.UNCHECKED)) def test: Unit = println("testing.. 1, 2... 3") } 

 :7: error: annotation argument needs to be a constant; found: Constant.UNCHECKED @SuppressWarnings(Array(Constant.UNCHECKED))