isInstance:
这个是类的一个方法,用来检测指定对象是否能转换成当前类。
用法是class.isInstance(obj)。
instanceof:
这是一个操作符,用来检测指定对象是否能转换成当前类。
用法是obj instanceof class
上代码:
先写好几个类,类的关系应该很简单明了
class Animal{
}
interface Behavior{
}
class Dog extends Animal implements Behavior{
}
class Cat extends Dog{
}
紧接着通过instanceof和isInstance来测试
首先instanceof
显然,dog继承Animal,实现Behavior,cat继承Dog,所以能转换,结果为true
那为什么最后一个是false呢
我的理解是Dog不是Cat类型,而Cat是Dog类型,因为Cat继承Dog
public class Test {
public static void main(String[] args) {
Dog dog = new Dog();
Cat cat = new Cat();
Animal animal = new Animal();
System.out.println(dog instanceof Animal);
System.out.println(dog instanceof Behavior);
System.out.println(cat instanceof Dog);
System.out.println(dog instanceof Cat);
}
}
// 结果
// true
// true
// true
// false
isInstance和上面的差不多,大家可以自行测试。