我正在使用Android Annotations Framework,专门用于Rest Integration。
我有以下代码。

主机配置接口

public interface Host {
    public String URL = "http://192.168.2.137";
}

以及带注释的接口,用于Rest通信。
@Rest(rootUrl = Host.URL, converters = { MappingJacksonHttpMessageConverter.class })
public interface RestClient {
    @Get("/entities.json")
    Entity[] allEntities();
}

我的问题是为什么注释属性Rest.rootUrl的值必须是一个常量表达式?以及如何为Rest.rootUrl使用String资源?

我想做类似的事情
@EBean
public class Host{
    @StringRes
    String URL;
}

但是使用RestClient接口是不可能的。

这个想法是处理本地化的REST应用程序,假设每个语言都有不同的URL
http://en.myapp.com
http://es.myapp.com

我知道Java接口必须具有最终属性,但是,有一种方法可以处理本地化的rootUrl值?

谢谢。

最佳答案

Jon关于注释值是正确的,但是Android Annotations实际上确实为您提供了一种动态设置RestClient的根URL的方法。

只需从批注中省略rootUrl属性,然后向接口添加方法:

void setRootUrl(String rootUrl);

只需记住,在实际使用RestClient之前,您需要在应用程序中的某个位置调用RestClient.setRootUrl(url)

有关更多信息,请访问https://github.com/excilys/androidannotations/wiki/Rest%20API#rest

10-08 18:40