Получение компонента по его универсальному типу - PullRequest
3 голосов
/ 25 января 2012

Я пытаюсь создать метод, позволяющий пользователю выполнять поиск по списку GameComponents , чтобы найти GameComponent любого класса, в котором он прошел.

Я в полной растерянности от того, как это сделать. Есть идеи?

Это то, что я пробовал до сих пор. Я пробовал много разных способов сделать это, но я продолжаю получать classDude не может быть преобразован в тип. Заранее спасибо.

public GameComponent<?> getComponentOfType(Class<Object> classDude)
    {

        for(GameComponent<?> gC : mComponentList)
        {
            if(gC instanceof classDude)
            {

            }
        }

    }

1 Ответ

4 голосов
/ 25 января 2012

Звучит так, как вы хотите:

public <T extends GameComponent<?>> T getComponentOfType(Class<T> classDude)
{
    for(GameComponent<?> gC : components)
    {
        if(classDude.isInstance(gC))
        {
            return classDude.cast(gC);
        }
    }
    return null;
}

Или не делая его универсальным:

public GameComponent<?> getComponentOfType(Class<?> classDude)
{
    for(GameComponent<?> gC : components)
    {
        if(classDude.isInstance(gC))
        {
            return (GameComponent<?>) classDude.cast(gC);
        }
    }
    return null;
}

Другими словами, вам не хватало методов Class.isInstance и Class.cast.

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