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

createh516小时前技术教程6

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关键字:final,static,this,super

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

还没弄明白Java中的this关键字吗,那来看这篇就够了

今天在上课时,冉冉大妹纸拉着我问:小哥哥,小哥哥,听说你在学Java,那你知道this关键字吗?我:啊?this啊? (完了完了,学习的时候学的什么也不是,这下被问到了,还是个妹纸,答不上来岂不尴尬)...

Java 的标识符和关键字 java 的标识符和关键字一样吗

Java 的标识符和关键字标识符的概念:标识符就是我们在编程中使用的“名字”。给类、接口、方法、变量、常量、包名起的相对唯一的名字。在编程语言中,不管是什么样的编程语言都会有标识符。并且都有差不多的规...

Java 中你绝对没用过的一个关键字?

这节课给大家介绍一个 Java 中的一个关键字 Record,那 Record 关键字跟不可变类有什么关系呢?看完今天的文章你就知道了。友情提示 Record 关键字在 Java14 过后才支持的,所...

三十四、Java中的final关键字 java中final关键字的用途

Java中的final关键字是一种修饰符,它有着多种用途,主要应用在变量、方法和类上,以指示不可变性或不可覆盖性。final 关键字修饰不同元素的作用Java元素作用变量当final修饰基本类型变量时...