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

createh53个月前 (12-29)技术教程44

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语言static关键字详解 java 中static

在Java语言中,static关键字是一个非常重要的修饰符,可以创建独立于具体对象的域变量或者方法。也就是实现即使没有创建对象,也能使用属性和调用方法。另一个比较关键的作用就是 用来形成静态代码块以优...

长知识了!Java 关键字 transient 还能这么用

前言最近在看 HashMap 源代码的时候,发现链表 table 数组采用了transient 关键字,笔者当时感觉对 transient 关键字即陌生但又有似曾相识,所以花了一些时间简要的总结了下使...

带你入门Java之每日3分钟Java——流程控制关键字

接着我们上期的带你入门Java之每日3分钟Java——数据运算符和显隐数据类型转换,我们来学习Java中的流程控制语句。判断语句选择判断语句指的是if else语句,其代码书写格式是if(statem...

你知道 Java 中关键字 enum 是一个语法糖吗?反编译枚举类

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第7天,点击查看活动详情写下这篇文章,也纯属于是一个机缘巧合,我一个非常要好的朋友程,也是刚刚踏上工作岗位。这个问题也是他踏上岗位...

Java Final 关键字详解 java中final关键字的用途

#大有学问# #java#在Java编程语言中,final关键字是一个重要的概念,它可以用于修饰类、方法和变量。本文将详细介绍final关键字的用途、特点及使用场景,帮助您更深入地理解Java中的f...