Java RESTEasy代理与泛型接口

Java RESTEasy代理与泛型接口,java,resteasy,Java,Resteasy,我有一个关于我正在使用的REST客户端的问题,但首先我将解释该服务: 我有一个界面: public interface IEntityResource<T extends BaseEntity>{ public List<T> findAll(); } 公共接口IEntityResource{ 公共列表findAll(); } 我有一个REST提供程序可以执行以下操作: @Path("system") public class System

我有一个关于我正在使用的REST客户端的问题,但首先我将解释该服务:

我有一个界面:

public interface IEntityResource<T extends BaseEntity>{
    public List<T> findAll();
}
公共接口IEntityResource{
公共列表findAll();
}
我有一个REST提供程序可以执行以下操作:

@Path("system")
public class SystemResource extends AbstractEntityResource<PITSystem>{
     // Some stuff here
}
@Override
public List<T> findAll() {
    L.error("Returning all");
    for(T entity : getEntityDao().findAll()){
        L.error("Returning class: " + entity.getClass());
    }
    return getEntityDao().findAll();
}
路径(“系统”) 公共类SystemResource扩展了AbstractEntityResource{ //这里有些东西 } 我的AbstractEntityResource执行以下操作:

@Path("system")
public class SystemResource extends AbstractEntityResource<PITSystem>{
     // Some stuff here
}
@Override
public List<T> findAll() {
    L.error("Returning all");
    for(T entity : getEntityDao().findAll()){
        L.error("Returning class: " + entity.getClass());
    }
    return getEntityDao().findAll();
}
@覆盖
公共列表findAll(){
L.错误(“全部返回”);
对于(T实体:getEntityDao().findAll()){
L.error(“返回类:+entity.getClass());
}
返回getEntityDao().findAll();
}
所有这些都非常有效,并且具有100%的测试覆盖率。当我部署它时,我可以添加实体,这没有问题

我的客户看起来像这样:

@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
interface PITSystemInterface extends IEntityResource<PITSystem>{}

public class ProxyClientExample {
    public static void main(String ar[]) throws Exception{
        ProxyClientExample pce = new ProxyClientExample();

        ResteasyClient client = new ResteasyClientBuilder().build();
        WebTarget target = client.target("http://mike:mike@localhost:8080/pit-beta1/rest/v1/system");
        ResteasyWebTarget rtarget = (ResteasyWebTarget) target;

        PITSystemInterface simple = rtarget.proxy(PITSystemInterface.class);
        PITSystem s = new PITSystem();
        s.setName("Test " + new java.util.Date().getTime());
        s.setDescription("Created: " + new java.util.Date().getTime());
        simple.create(s);
        System.err.println(simple.getStatus());
        for(PITSystem system : simple.findAll()){
            System.err.println(system);
        }
    }
}
@使用(MediaType.APPLICATION\u JSON)
@产生(MediaType.APPLICATION_JSON)
接口PITSystemInterface扩展了IEntityResource{}
公共类ProxyClientExample{
公共静态void main(字符串ar[])引发异常{
ProxyClientExample pce=新的ProxyClientExample();
ResteasyClient客户端=新的ResteasyClientBuilder().build();
WebTarget=client.target(“http://mike:mike@本地主机:8080/pit-beta1/rest/v1/system);
ResteasyWebTarget rtarget=(ResteasyWebTarget)目标;
PITSystemInterface simple=rtarget.proxy(PITSystemInterface.class);
PITSystem=新PITSystem();
s、 setName(“Test”+new java.util.Date().getTime());
s、 setDescription(“创建:+new java.util.Date().getTime());
简单。创建(s);
System.err.println(simple.getStatus());
for(PITSystem:simple.findAll()){
System.err.println(系统);
}
}
}
问题是底部的for循环给了我一个异常:

线程“main”java.lang.ClassCastException中的异常:无法将BaseEntity转换为PITSystem

如果我将for循环更改为
BaseEntity
,它会工作。我的服务器日志消息显示:

返校班:班级制

返校班:班级制

返校班:班级制

出于某种原因,RESTEasy客户端似乎认为它是BaseEntity,但事实并非如此。你知道为什么吗