解决“类与类<t>不兼容”

时间:2018-05-27 13:35:30

标签: java generics intellij-idea

我在Java-Project a Framework(Ashley)中使用。 要使用它,我经常要编写类似的东西:

entityEngine.getSystem(RenderingSystem.class).setProcessing(true);

虽然RenderingSystem是我创建的东西,但getSystem是它自己的框架的一部分。查看该方法的实现,它看起来像:

 /**
 * Quick {@link EntitySystem} retrieval.
 */
@SuppressWarnings("unchecked")
public <T extends EntitySystem> T getSystem(Class<T> systemType) {
    return systemManager.getSystem(systemType);
}

现在,即使我可以使用gradle编译和运行代码,我的IDE(IntelliJ)也会显示错误并显示以下警告:

enter image description here

我错了什么,或者我怎么能至少抑制这些警告?

修改

以下是我的类“RenderingSystem”的定义:

public class RenderingSystem extends EntitySystem {...}

2 个答案:

答案 0 :(得分:0)

您的方法接受类型T的类T extends EntitySystem>

RenderingSystem必须扩展EntitySystem(或EntitySystem是一个接口时实现)才能与该方法兼容

答案 1 :(得分:0)

  

虽然RenderingSystem是我创建的东西,但getSystem是一个Part   框架itselve。查看该方法的实现吧   看起来像那样:

如果您传递了自己项目中定义的RenderingSystem课程,并且无法将其传递给getSystem()方法,则表示RenderingSystem并非来自EntitySystem {1}}。
您应该扩展/实现框架的EntitySystem类,以使getSystem()方法可以作为参数传递给您自己的类。