Java 在Android中实现动态路由的通用改型接口

Java 在Android中实现动态路由的通用改型接口,java,android,retrofit,Java,Android,Retrofit,我目前正试图使用非常简洁的改型库重构我的Androïd项目。虽然我已经在使用这个库的其他项目上有了一些工作示例,但我正在尝试进一步推动我的集成,以便生成动态路由 为此,我已开始使用改型对界面进行编码,如下所示: public interface RestServices<T> { @GET("{route_name}") List<T> getObjects(@Path("route_name") String route, @QueryMap Map<Strin

我目前正试图使用非常简洁的改型库重构我的Androïd项目。虽然我已经在使用这个库的其他项目上有了一些工作示例,但我正在尝试进一步推动我的集成,以便生成动态路由

为此,我已开始使用改型对界面进行编码,如下所示:

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);

}
然而,我在改装库中遇到了一个异常,说这是不安全的,无法从另一个接口扩展(这基本上就是我想要做的…)


我想要达到的目标有什么问题吗?你能给我一些提示,让我可以做类似的事情吗?

我确实看到了这个公开问题,但我不确定仅仅通过使用分叉库来禁用这个异常是正确的,因为开发人员没有清楚地解释他们为什么要添加这个限制。引用的评论似乎很好地解释了开发人员的观点显然。@PTITVINU更新,一旦合并,将不再存在问题。
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);
}

}
public interface UserService extends RestServices<User> {}