Получение захвата экземпляра универсального объекта в Java - PullRequest
1 голос
/ 29 марта 2019

Java 8 здесь. У меня есть следующие POJO:

public class Fizz {
    // ctor, getters & setters, etc.
}

public class Buzz {
    // ctor, getters & setters, etc.
}

public class Foobar {
    // ctor, getters & setters, etc.
}

public class Envelope<PAYLOAD_TYPE> {
    private String name;
    private PAYLOAD_TYPE payload;

    // ctor, getters & setters, etc.
}

И следующий класс, который обрабатывает Envelope:

public class Processor {
    public List<Widget> process(final Envelope<?> envelope) {
        if (envelope is an Envelope<Fizz>) {
            // do something 1
        } else if (envelope is an Envelope<Buzz>) {
            // do something 2
        } else if (envelope is an Envelope<Foobar>) {
            // do something 3
        } else {
            // do something 4
        }
    }
}

Как я могу определить, что означает захват envelope в классе Processor#process, чтобы я мог принимать свои решения в блоках if-else-if?

1 Ответ

3 голосов
/ 29 марта 2019

вы можете получить полезную нагрузку и проверить ее с помощью instanceof:

if (envelope.getPayload() instanceof Fizz) { ... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...