详谈Java中instanceof和isInstance的区别

 更新时间:2017年01月16日 10:13:43   投稿:jingxian  
下面小编就为大家带来一篇详谈Java中instanceof和isInstance的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

一次性搞定instanceof和isInstance,instanceof和isInstance长的非常像,用法也很类似,先看看这两个的用法:

obj.instanceof(class)

也就是说这个对象是不是这种类型,

1. 一个对象是本身类的一个对象

2. 一个对象是本身类父类(父类的父类)和接口(接口的接口)的一个对象

3. 所有对象都是Object

4. 凡是null有关的都是false  null.instanceof(class)

class.inInstance(obj)

这个对象能不能被转化为这个类

1. 一个对象是本身类的一个对象

2. 一个对象能被转化为本身类所继承类(父类的父类等)和实现的接口(接口的父接口)强转

3. 所有对象都能被Object的强转

4. 凡是null有关的都是false   class.inInstance(null)

类名.class和对象.getClass()几乎没有区别,因为一个类被类加载器加载后,就是唯一的一个类。

一个实例搞定:

 

class A {
}

class B extends A {
}

public class Test {
  public static void main(String[] args) {

    B b = new B();
    A a = new A();
    A ba = new B();
    System.out.println("1------------");
    System.out.println(b instanceof B);
    System.out.println(b instanceof A);
    System.out.println(b instanceof Object);
    System.out.println(null instanceof Object);
    System.out.println("2------------");
    System.out.println(b.getClass().isInstance(b));
    System.out.println(b.getClass().isInstance(a));
    System.out.println("3------------");
    System.out.println(a.getClass().isInstance(ba));
    System.out.println(b.getClass().isInstance(ba));
    System.out.println(b.getClass().isInstance(null));
    System.out.println("4------------");
    System.out.println(A.class.isInstance(a));
    System.out.println(A.class.isInstance(b));
    System.out.println(A.class.isInstance(ba));
    System.out.println("5------------");
    System.out.println(B.class.isInstance(a));
    System.out.println(B.class.isInstance(b));
    System.out.println(B.class.isInstance(ba));
    System.out.println("6------------");
    System.out.println(Object.class.isInstance(b));
    System.out.println(Object.class.isInstance(null));
  }
}

运行结果:

以上这篇详谈Java中instanceof和isInstance的区别就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Mybatis-plus新版本分页失效PaginationInterceptor过时的问题

    Mybatis-plus新版本分页失效PaginationInterceptor过时的问题

    这篇文章主要介绍了Mybatis-plus新版本分页失效,PaginationInterceptor过时问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • spring security实现下次自动登录功能过程解析

    spring security实现下次自动登录功能过程解析

    这篇文章主要介绍了spring security实现记住我下次自动登录功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • 全面解析Java观察者模式

    全面解析Java观察者模式

    这篇文章主要帮助大家全面解析Java观察者模式,了解java设计模式中的观察者模式,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • 浅谈Java数据结构之稀疏数组知识总结

    浅谈Java数据结构之稀疏数组知识总结

    今天带大家了解一下Java稀疏数组的相关知识,文中有非常详细的介绍及代码示例,对正在学习java的小伙伴们有很好地帮助,需要的朋友可以参考下
    2021-05-05
  • 解决Springboot项目启动后自动创建多表关联的数据库与表的方案

    解决Springboot项目启动后自动创建多表关联的数据库与表的方案

    这篇文章主要介绍了解决Springboot项目启动后自动创建多表关联的数据库与表的方案,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • Maven构建生命周期详细介绍

    Maven构建生命周期详细介绍

    这篇文章主要介绍了Maven构建生命周期详细介绍,小编觉得还是挺不错的,这里分享给大家,需要的朋友可以参考下。
    2017-11-11
  • Java实现数组翻转的实现代码

    Java实现数组翻转的实现代码

    这篇文章主要介绍了Java实现数组翻转的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • java实现简单的webservice方式

    java实现简单的webservice方式

    这篇文章主要为大家详细介绍了java实现简单的webservice方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • SpringMVC整合websocket实现消息推送及触发功能

    SpringMVC整合websocket实现消息推送及触发功能

    这篇文章主要为大家详细介绍了SpringMVC整合websocket实现消息推送及触发功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • selenium + ChromeDriver安装及使用方法

    selenium + ChromeDriver安装及使用方法

    这篇文章主要介绍了selenium + ChromeDriver安装及使用方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-06-06

最新评论