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

createh56个月前 (12-29)技术教程110

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关键字 java中final关键字的用途

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

Java 详细剖析关键字 static,深入全面了解

1. 概述static 是一种修饰符static 是Java中表静态的关键字它可以修饰成员变量、成员方法、代码块被static修饰的成员变量或成员方法,将不再依赖于对象的创建而去使用,而是依赖类的存在...

Java 关键字之 native 详解 java native access

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

详解Java关键字之——volatile java volitile关键字

一、什么是Volatilevolatile是Java提供的一种轻量级的同步机制。Java 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量,相比于synchronized(syn...

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

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

Java 主函数 main 中的关键字 static

相信很多人在运行第一个可以运行的 Java 程序的时候都会要求写一个主函数。然后很多人都会照葫芦画瓢的写一个下面的函数:public static void main(String[] args) {...