在斯卡拉标注使用常数最佳实践

我用挂毯5作为我的首选Web框架。 挂毯可以让我在配置类中定义的符号和符号注入到其他组件。

例如,

公共接口SymbolConstants {静态字符串DEFAULT_TIMEOUT_KEY =“default.timeout”; }公共类的AppModule {无效contributeApplicationDefault(配置CONF){conf.add(SymbolConstants.DEFAULT_TIMEOUT_KEY,“10”); }}公共类MyComponent的{@Symbol(SymbolConstants.DEFAULT_VALUE_KEY)私人长超时; }

定义静态常量并把它们作为注释值的能力,给我的编译时间检查。

我想知道如何来定义常量,并把它们作为斯卡拉标注值。 如果没有,什么是定义/限制,我们可以在Scala中分配给注解价值的最佳实践。

--------------解决方案-------------

在“最终”关键字才能使编译器发出它,你会做在Java中。 例如,

object Foo
{
final val MY_SYMBOLIC_CONSTANT="whatever"
}

看来,否则,你只能得到这不是静态的可计算的引擎盖下的存取方法。

这似乎并不可能瓦特/斯卡拉版本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")
}

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

您是否尝试过这个?

object SymbolConstants {
val DEFAULT_VALUE_KEY = "default.timeout"
}

class MyComponent {
@Symbol(SymbolConstants.DEFAULT_VALUE_KEY)
var timeout = 0;
}


UPDATE

这其中的工作原理:

import scala.reflect._

@BeanDescription(SymbolConstants.DEFAULT_VALUE_KEY)
class MyComponent {
var timeout = 0;
}

斯卡拉>定义的类称为MyComponent

分类:java的 时间:2015-03-15 人气:0
本文关键词: Java中,常量,斯卡拉
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.515 (s). 10 q(s)