Решить "Класс не совместим с Классом <T>" - PullRequest
0 голосов
/ 27 мая 2018

Я использую в Java-Project Framework (Эшли).Чтобы использовать его, мне часто приходится писать что-то вроде этого:

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

Хотя RenderingSystem - это то, что я создал, getSystem является частью самой платформы Framework.При просмотре реализации этого метода это выглядит так:

 /**
 * 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 голосов
/ 27 мая 2018

Хотя RenderingSystem - это то, что я создал, getSystem является частью самой платформы Framework.Просмотр реализации этого метода выглядит следующим образом:

Если вы передаете класс RenderingSystem, который вы определили в своем собственном проекте, и что вы не можете передать его в методы getSystem(), это означает, чтоRenderingSystem не является производным от EntitySystem.
Вероятно, вам следует расширить / реализовать класс EntitySystem платформы, чтобы метод getSystem() можно было использовать с вашими собственными классами, передаваемыми в качестве параметра.

0 голосов
/ 27 мая 2018

Ваш метод принимает класс типа T, который T extends EntitySystem>

Ваш RenderingSystem должен расширить EntitySystem (или реализовать, если EntitySystem является интерфейсом), чтобы быть совместимым с этим методом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...