isAssignableFrom和instanceof
时间:2019-11-19
本文章向大家介绍isAssignableFrom和instanceof,主要包括isAssignableFrom和instanceof使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1、isAssignableFrom
class1.isAssignableFrom(class2) 判定此 Class
对象所表示的类或接口与指定的 Class
参数所表示的类或接口是否相同,或是否是其超类或超接口。如果是则返回 true
;否则返回 false
。如果该 Class
表示一个基本类型,且指定的 Class
参数正是该 Class
对象,则该方法返回 true
;否则返回 false
。
1.class2是不是class1的子类或者子接口
2.Object是所有类的父类
一个例子搞定:
package com.auuzee.test1; class A { } class B extends A { } public class Test1 { public static void main(String[] args) { A a = new A(); B b = new B(); A ba = new B(); System.out.println("1-------------"); System.out.println(A.class.isAssignableFrom(a.getClass())); System.out.println(B.class.isAssignableFrom(b.getClass())); System.out.println(A.class.isAssignableFrom(b.getClass())); System.out.println(B.class.isAssignableFrom(a.getClass())); System.out.println(A.class.isAssignableFrom(ba.getClass())); System.out.println(B.class.isAssignableFrom(ba.getClass())); System.out.println("2-------------"); System.out.println(a.getClass().isAssignableFrom(A.class)); System.out.println(b.getClass().isAssignableFrom(B.class)); System.out.println(a.getClass().isAssignableFrom(B.class)); System.out.println(b.getClass().isAssignableFrom(A.class)); System.out.println(ba.getClass().isAssignableFrom(A.class)); System.out.println(ba.getClass().isAssignableFrom(B.class)); System.out.println("3-------------"); System.out.println(Object.class.isAssignableFrom(b.getClass())); System.out.println(Object.class.isAssignableFrom("abc".getClass())); System.out.println("4-------------"); System.out.println("a".getClass().isAssignableFrom(Object.class)); System.out.println("abc".getClass().isAssignableFrom(Object.class)); } }
2、instanceof
instanceof 严格来说是Java中的一个双目运算符,用来测试一个对象是否为一个类的实例,用法为:
boolean
result = obj
instanceof
Class
其中 obj 为一个对象,Class 表示一个类或者一个接口,当 obj 为 Class 的对象,或者是其直接或间接子类,或者是其接口的实现类,结果result 都返回 true,否则返回false。
注意:编译器会检查 obj 是否能转换成右边的class类型,如果不能转换则直接报错,如果不能确定类型,则通过编译,具体看运行时定。
例子:
Person p1 =
new
Person();
Person p2 =
new
Man();
Man m1 =
new
Man();
System.out.println(p1
instanceof
Man);
//false
System.out.println(p2
instanceof
Man);
//true
System.out.println(m1
instanceof
Man);
//true
原文地址:https://www.cnblogs.com/gllegolas/p/11892099.html
- 为UINavigationBar添加自定义背景
- UIScrollView无法响应touches的解决方法
- WCF技术剖析之十七:消息(Message)详解(下篇)
- UITextView自动滚动的解决方案
- MVC解决Json DataGrid返回的日期格式是/Date(20130450000365)
- Easyui 让DataGrid适应浏览器宽度
- Easyui 让Window弹出居中与最大化后居中
- WCF技术剖析之十六:数据契约的等效性和版本控制
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(13)-系统日志和异常的处理③
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(12)-系统日志和异常的处理②
- Enterprise Library Policy Injection Application Block 之二: PIAB设计和实现原理
- 育碧与研究所共同开发的AI,是什么样的?
- 大家都在关注AI,但这些事你可能并不知道!
- AI—未来医疗
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PDO::exec讲解
- 使用keras框架cnn+ctc_loss识别不定长字符图片操作
- PHP实现的策略模式示例
- 浅谈pytorch中torch.max和F.softmax函数的维度解释
- 用PHP的反射实现委托模式的讲解
- PHP时间函数使用详解
- python批量处理多DNS多域名的nslookup解析实现
- PHP单例模式数据库连接类与页面静态化实现方法
- pytorch 常用函数 max ,eq说明
- 解析python 中/ 和 % 和 //(地板除)
- python右对齐的实例方法
- PHP的PDO预处理语句与存储过程
- PHP工厂模式的日常使用
- 使用ucenter实现多站点同步登录的讲解
- 实例讲解PHP验证邮箱是否合格