JAVA反射之isAssignableFrom()与instanceof关键字的用法

yumo6662个月前 (06-13)技术文章17

isAssignableFrom()instanceof 关键字,这两种方式是常用的判断继承关系的方式,它们的区别在于:

  • isAssignableFrom()Class 类中的方法,而 instanceofJAVA 关键字
  • isAssignableFrom() 的使用对象是 Class,而 instanceof 的使用对象是对象实例

两者的用法如下,具体使用哪个方法就得看当前拥有的是对象实例还是只有 Class

// isAssignableFrom() 的使用方法
父类.class.isAssignableFrom(子类.class)

// instanceof 的使用方法
子类实例 instanceof 父类类型

代码验证

创建一个接口

public interface A {}

创建一个实现类

public class B implements A {}

测试

public class Test {

    public static void main(String[] args) {
        System.out.println(B.class.isAssignableFrom(B.class));
        System.out.println(A.class.isAssignableFrom(B.class));

        B b = new B();
        System.out.println(b instanceof A);
        System.out.println(b instanceof B);
        System.out.println(B.class.isAssignableFrom(b.getClass()));
        System.out.println(A.class.isAssignableFrom(b.getClass()));
    }

}

结果为

true
true
true
true
true
true

通过代码可以看出,如果不想用 instanceof,也是可以转换为使用 isAssignableFrom() 方法的,但是反过来就不行了。

最后关注一下,共同学习

相关文章

Java关键字:final,static,this,super

1. final 关键字:final 关键字,意思是最终的、不可改变的,初始化之后就不能再次修改 ,用来修饰类、方法和变量,具有以下特点:final 修饰的类不能被继承,final类中的所有成员方法都...

Java中final关键字的多样魅力

Java中final关键字的多样魅力在Java编程的世界里,final关键字就像是一位低调却实力非凡的角色。它不是那种让人一眼就惊艳的存在,但只要你深入接触,就会发现它在不同场景下展现出来的独特魅力。...

吊打面试官(七)--Java语言static关键字一文全掌握

导读static关键字在Java中用于创建类级别的成员,这些成员不属于类的任何特定实例,而是属于整个类。static可以用于修饰变量、方法、代码块和内部类。本文从基础使用,使用问题,使用场景,底层原理...

Java并发编程中的volatile关键字深度解读

Java并发编程中的volatile关键字深度解读提到Java中的关键字volatile,我们常常会联想到它与线程安全的紧密关系。作为一个经常出现在面试题中的"明星"关键字,volat...

轻松掌握Java多线程 - 第六章:volatile关键字

学习目标1 内存可见性问题1.1 什么是内存可见性1.2 内存可见性问题的原因2 volatile的作用与使用场景2.1 volatile关键字介绍2.2 volatile的内存语义2.3 volat...

Java 关键字之 native 详解

本篇博客我们将介绍Java中的一个关键字——native。native 关键字在 JDK 源码中很多类中都有,在 Object.java类中,其 getClass() 方法、hashCode()方法、...