Написание метода содержит InstanceOf (Класс) - PullRequest
2 голосов
/ 21 мая 2019

Я написал класс Couple

Я хочу написать метод containsInstanceOf, подобный этому, в (1), но я получаю ошибку «не могу разрешить cls для типа». Я решил это с помощью (2).

но мне это совсем не нравится.Есть ли у вас какие-либо предложения по написанию этого метода более элегантным и отказоустойчивым?

(1)

    private boolean containsInstanceof(Class<?extends GameObject> cls) {
    return this.getFirst() instanceof cls || this.getSecond() instanceof cls;
}

(2)

    private boolean containsInstanceof(Class<?extends GameObject> cls) {
    return this.getFirst().getClass().getName().equals(cls.getName()) ||
           this.getSecond().getClass().getName().equals(cls.getName());
}

не ожидается ошибок в (1) но получите, что cls не может быть разрешен для типа.

1 Ответ

4 голосов
/ 21 мая 2019

Вы должны использовать метод Class.isInstance:

Этот метод является динамическим эквивалентом оператора instanceof языка Java.

return cls.isInstance(this.getFirst()) || cls.isInstance(this.getSecond());
...