这个平台上的第一个问题,我希望你们能够对我的问题有所了解:)
我目前正在尝试使用非常整洁的Retrofit库来重构我的Androïd项目。虽然我已经在使用这个库的其他项目上有一些工作示例,但我试图进一步推动我的集成,以便我可以生成动态路由。
为此,我已经开始使用Retrofit对接口进行编码,如下所示:
public interface RestServices<T> {
@GET("{route_name}")
List<T> getObjects(@Path("route_name") String route, @QueryMap Map<String, String> options);
@GET("{route_name}/{id}")
T getObject(@Path("route_name") String route, @Path("id") String id, @QueryMap Map<String, String> options);
@POST("{route_name}")
T postObject(@Path("route_name") String route, @Body T object);
@PUT("{route_name}/{id}")
T putObject(@Path("route_name") String route, @Path("id") String id, @Body T object);
}
基本上这会调用我在我的应用程序中为每个服务使用的基本路由,并且我需要从此接口实现此接口的所有类,以便使用绑定到我的服务的模型的类名生成dyncamically路由。 / p>
public abstract class RestProviderImpl<T> extends RestProvider<RestServices<T>> {
protected abstract String getClassName();
protected abstract Class<RestServices<T>> getProvider();
protected String getMethod() {
String className = getClassName();
String res = TextUtils.join("_", className.split("(?=[A-Z])"));
return res.substring(1).toLowerCase(Locale.getDefault());
}
protected String getPluralizedMethod() {
return getMethod() + "s";
}
public List<T> getObjects(Map<String, String> options) {
return getService(getProvider()).getObjects(getPluralizedMethod(), options);
}
public T getObject(String id, Map<String, String> options) {
return getService(getProvider()).getObject(getPluralizedMethod(), id, options);
}
public T postObject(T object) {
return getService(getProvider()).postObject(getPluralizedMethod(), object);
}
public T putObject(String id, T object) {
return getService(getProvider()).putObject(getPluralizedMethod(), id, object);
}
}
从那时起,我将声明所有其他相关服务作为此接口的扩展。我可以将所有特定路由添加到这些services
。
public interface UserService extends RestServices<User> {}
但是我在Retrofit库中遇到了一个异常,说这是从另一个接口扩展的不安全(这基本上就是我想做的......)。
我想要实现的目标有什么问题吗?你能给我一些提示,以便我可以做类似的事吗?
提前致谢!