Class.isAssignableFrom

Java的Class类,有一个native的方法: isAssignableFrom

public native boolean isAssignableFrom(Class<?> cls);

它的作用是判断调用这个方法或者接口的类或接口与参数传入的类或接口是否相同,或者是其父类,例如:

Object.class.isAssignableFrom(String.class);  // true

Class.isInstance

类似的,Class类还有一个native的方法: isInstance

public native boolean isInstance(Object obj);

它的作用是,传入的参数obj对象(如果为null,则直接返回false),是否是调用这个方法的类或接口的实例,或是其子类的实例,例如:

Map map = new HashMap();
Map.class.isInstance(map);  // true

instanceof

当然,还有最常用的,关键字instanceof
判断左边的对象(如果为null,则直接返回false),是否是右边类或接口的实例,或者子类的实例

Map map = new HashMap();
map instanceof Map  // true

总结

通过对比可以发现,Class.instance 和 instanceof 的作用其实是一样的,是判断一个对象和类或接口的关系,而Class.isAssignableFrom判断的是两个类或接口之间的关系

isAssignableFrom和isInstance、instanceof相关推荐

  1. Java中isAssignableFrom()方法与instanceof()方法用法

    一句话总结: isAssignableFrom()方法是从类继承的角度去判断,instanceof()方法是从实例继承的角度去判断. isAssignableFrom()方法是判断是否为某个类的父类, ...

  2. 虚拟机的分类_「面试必备」Java虚拟机知识点复习手册(下)

    关注我的微信公众号:后端技术漫谈 不定期推送关于后端开发.爬虫.算法题.数据结构方面的原创技术文章,以及生活中的逸闻趣事. 我目前是一名后端开发工程师.主要关注后端开发,数据安全,网络爬虫,物联网,边 ...

  3. java中class_Java中Class对象详解

    https://blog.csdn.net/mcryeasy/article/details/52344729 待优化整理 总结 Class类简介 在java世界里,一切皆对象.从某种意义上来说,ja ...

  4. 浅谈EventBus的使用原理

    EventBus这是一个目前被广泛使用的,用于在不同的界面(Activity/Fragment)之间传递数据的三方库,其简单的使用深受广大开发者喜欢. 相比起Bundle或者接口回调,EventBus ...

  5. Spring问题研究之bean的属性xml注入List类型不匹配

    一.问题描述 今天在Java群里看到"白日梦想家" 的一个提问,很有意思: 为什么 String类型的列表 通过spring的属性注入 可以注入Integer类型的元素呢? 二.问 ...

  6. Java筑基——反射(1):基本类周边信息获取

    相关文章: Java筑基--反射(1):基本类周边信息获取: Java筑基--反射(2):泛型周边信息获取: Java筑基--反射(3):类内部信息获取 目录 1. 前言 2. 正文 2.1 类的生命 ...

  7. JAVA后端开发面试经典

    1.String的不可变性 一但一个字符串在堆内存创建,它是不能被改变的,我们应该注意所有的关于String类的方法不是改变一个字符串本身,而是重新返回一个新的字符串. 如果我们需要一个频繁的改变一个 ...

  8. Java双亲委派模型:为什么要双亲委派?如何打破它?破在哪里?

    文章目录 一.前言 二.类加载器 三.双亲委派机制 1.什么是双亲委派 2.为什么要双亲委派? 四.破坏双亲委派 1.直接自定义类加载器加载 2.跳过AppClassLoader和ExtClassLo ...

  9. java 类型判断方法

    java 类型判断方法有三种,分别是instanceof, isInstance,isAssignableFrom. 1.instanceof是关键字,isInstance和isAssignableF ...

最新文章

  1. RocketMQ消息丢失场景及解决办法
  2. Access中复制表
  3. spark编程mysql数据源_Spark - 直接操作数据源 MySQL
  4. JavaWeb学习总结(十二)--事务
  5. 43 | 套路篇:网络性能优化的几个思路(上)
  6. 什么是全兼容?DVD主流格式全面解析
  7. 禁用select下拉方法
  8. Linux下安装lingo教程-centos6 64位
  9. 深度学习之MNIST数据集
  10. Uniapp进行APP打包——iOS 系统
  11. html开源flash视频播放器代码下载
  12. isalpha isdigit isalnum isupper 检测字母或数字函数
  13. virtual box linux 安装增强功能,在linux系统中安装virtualbox增强功能(增强包)的详细步骤...
  14. php批量邮件地址,PHP通过phpmailer批量发送邮件功能
  15. java 跨年 周计算公式_Java关于周跨年的周数计算
  16. harmonyos bate,HarmonyOS 生态最重的拼图,手机开发者 Beta 版终于到来
  17. 面试官:说说left join和left semi join 两者有什么区别?
  18. Eth-Trunk的配置
  19. java游戏 动态录入弹球_动态弹球的实现 加入了多线程技术--javaSE游戏准备工作...
  20. Django + ajax

热门文章

  1. 如何在TFS中用命令行提交更新
  2. swith语句的较安全用法
  3. 产品设计体会(1001)初探用户需求
  4. c语言写贪吃蛇什么水平_学了一些C语言,也不知道自己学到什么程度,自己想写个贪吃蛇但是写不出来,想看懂下面这个程序,求解释...
  5. JS格式化JSON串显示在表格中
  6. VS 2017显示“高级保存选项”命令操作方法
  7. 非常有用的css使用总结
  8. 用户看法调查结果及分析(四)
  9. IOS第四天-新浪微博 -存储优化OAuth授权账号信息,下拉刷新,字典转模型
  10. php 学习笔记 数组2