Android注释:使用String资源提供注释值

时间:2014-10-02 11:45:03

标签: java android spring android-annotations

也许我没有看到树的森林,但是有没有办法使用String资源为注释字段提供值。我想要的是这样的事情

@Rest(rootUrl=@StringRes(R.string.root_url), converters=MappingJackson2HttpMessageConverter.class) 
public interface MyRestService extends RestClientErrorHandling {...

@Rest注释中的rootUrl值应该从String资源R.string.root_url中获取值。

非常感谢任何方向。

2 个答案:

答案 0 :(得分:0)

我发布问题后几分钟,我发现Why The value for annotation attribute Rest.rootUrl must be a constant expression?几乎回答了这个问题。

基本上,我可以在rest服务接口中使用setRootUrl(String rootUrl)方法在运行时注入rootUrl值。任何想要了解更多信息的人,请参阅参考SO问题中的答案以获取更多详细信息。

答案 1 :(得分:0)

我对这个问题也很感兴趣。但经过思考,我认为这几乎是不可能的。

  1. Java提供三种类型的RetentionPolicy,SOURCE,CLASS,RUNTIME。它定义了此注释的生命周期。在运行时期间仅保留RUNTIME注释。但编译器怎么知道注释是否会被保留?

  2. 注释由APT(注释处理工具)处理,它与源代码的编译器完全不同。那么APT怎么能拥有编译器甚至JVM的知识呢?

  3. 基于以上两点,不可能在注释中使用代码中定义的变量。