obj instanceof Arrays
было бы obj
знать, является ли obj
экземпляром Arrays
, но что я хочу знать, если какой оператор использовать, если obj
является подклассом Arrays
?
Предположим, что класс Animal - это суперкласс Dog.
Dog d = new Dog().
если (dog
", какой оператор?" Animal
) приведет к true
?
instanceof
вернет true и для подклассов. Экземпляр Dog
также является экземпляром Animal
.
Animal.class.isAssignableFrom(dog.getClass())
вернет вам true
если Dog
является дочерней Animal
(либо распространяется, либо реализуется)
это поможет вам, если у вас есть тип, определенный во время выполнения, если он установлен для проверки типа, то вы можете использовать instanceof
operator
также при использовании этого метода обязательно обработайте null
Animal
вы должны сказать Animal.class.isAssignableFrom(dog.getClass()) && !dog.getClass().isAssignableFrom(Animal.class)
isAssignableFrom()
является ни ключевым словом, ни оператором. Кроме того, то, что вы написали, в основном эквивалентно dog instanceof Animal
- исключение, если dog
null
, что, в зависимости от вопроса, не
Решение Jigar, вероятно, лучше всего, но вы, вероятно, могли бы сделать это так:
dog instanceof Animal && !dog.getClass().equals(Animal.class)
Это вернет true, если класс dog
является дочерним элементом Animal
но не является экземпляром Animal
для базового уровня.
Class
для каждого типа. Это то, что вы хотите / работаете?