在 Scala 注释中使用常量的最佳实践
我使用 Tapestry 5 作为我选择的 Web 框架。 Tapestry 允许我在配置类中定义符号并将符号注入其他组件。
例如,
public interface SymbolConstants { static String DEFAULT_TIMEOUT_KEY = "default.timeout"; } public class AppModule { void contributeApplicationDefault(Configuration conf) { conf.add(SymbolConstants.DEFAULT_TIMEOUT_KEY, "10"); } } public class MyComponent { @Symbol(SymbolConstants.DEFAULT_VALUE_KEY) private long timeout; }
定义静态常量并将其用作注释值的能力为我提供了编译时检查。
我想知道如何定义常量并将它们用作 scala 注释的值。如果没有,定义/限制我们可以分配给 scala 中注释的值的最佳实践是什么。
I use tapestry 5 as my choice of web framework. Tapestry allows me to define symbols in the configure class and inject symbols into other components.
for example,
public interface SymbolConstants { static String DEFAULT_TIMEOUT_KEY = "default.timeout"; } public class AppModule { void contributeApplicationDefault(Configuration conf) { conf.add(SymbolConstants.DEFAULT_TIMEOUT_KEY, "10"); } } public class MyComponent { @Symbol(SymbolConstants.DEFAULT_VALUE_KEY) private long timeout; }
The ability to define static constants and use them as annotation values gives me compile time check.
I am wondering how to define constants and use them as values of scala annotations. If not, what is the best practice to define/limit the value that we can assign to annotations in scala.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
需要“final”关键字才能使编译器像在 Java 中那样发出它。例如,
否则,您似乎只能在幕后获得一个不可静态计算的访问器方法。
The 'final' keyword is required to make the compiler emit it as you would do it in Java. E.g.,
It seems that, otherwise, you only get an accessor method under the hood which is not statically calculable.
对于 scala 版本 2.8.1.final、2.8.2.final 或 2.9.1.final 似乎不可能(结果与所有版本相同):
。
It doesn't seem possible w/ scala versions 2.8.1.final, 2.8.2.final, or 2.9.1.final (the result was the same with all):
.