Java. instanceof с переменной класса

283
07 марта 2018, 07:16

Почему у меня не получается использовать во втором аргументе операции instanceof переменную типа Class? Пример:

Class mClass= SomeClass.class;
If(someObject instanceof mClass) 
     Return;

П.с. Забыл добавить, что instanceof мне нужен потому что в условии ожидается что наследник указанного класса так же вернёт истину. Такое возможно с переменной?

Answer 1

Если класс, принадлежность объекта к которому вы хотите проверить, не известен на этапе компиляции - делайте это так:

if (someObject.getClass().equals(mClass)) {
}

Вариант с isInstance проверит еще все суперклассы вашего someObject.

if (mClass.isInstance(someObject)) {
}
Answer 2

1 вариант Работает с типом

if (someObject instanceof SomeClass) 
    return;

2 вариант Работает с экземпляром типа

if (SomeClass.class.isAssignableFrom(someObject.getClass())) 
    return;
Answer 3

В общем если кому то тоже интересно, то вот такой ответ я придумал на свой же вопрос

public boolean isInstanceOf(Class fClass)
{
    Class fThis=this.getClass();
    while(fThis!=ArhiClasd.class)
    {
        if(fThis==fClass)
            return true;
        else
            fThis=fThis.getSuperclass();
    }
    return false;
}

ArhiClass это тот самый самый супер класс, до которого нам интересны все совпадения. Можете указать хоть Object.

READ ALSO
Не создается java поток на ubuntu 16.04

Не создается java поток на ubuntu 16.04

Когда тестирую свою программу на компьютере поток создается без проблем и программа работает корректно, но если я запускаю тот жеjar файл...

290
Рефакторинг длины метода

Рефакторинг длины метода

Как можно сократить такой вот метод

272
Последовательный Animator Android Studio

Последовательный Animator Android Studio

В разработке под android новичок, имеется ImageView, в который подгружается новая фотография при кликеХочу, чтобы ImageView сначала исчезал, затем подгружалась...

273