Class.isAssignableFrom(Class clz)与instanceof与Class.isInstance(Object obj) 的区别和联系
编程的时候可能会遇到一个不知道它属于哪个类的对象,我们可以用下列运算符或者方法来判断。
1、instanceof
instanceof是运算符只被用于对象引用变量,检查左边的被测试对象是不是右边类或接口的实例化。如果被测对象是null值,则测试结果总是false。 String str = new String("测试"); System.out.println(str instanceof String); //输出true。
2、 isInstance(Object obj)
isInstance(Object obj)方法,这个方法与instanceof等价,其中obj是被测试的对象,如果obj是调用这个方法的class或接口的实例,则返回true。 String str = new String("测试"); System.out.println(String.class.isInstance(str)); //输出true。
3、isAssignableFrom
isAssignableFrom(Class cls)方法,如果调用这个方法的class或接口与参数cls表示的类或接口相同,或者是参数cls表示的类或接口的父类,则返回true。 System.out.println(String.class.isAssignableFrom(Object.class)); System.out.println(Object.class.isAssignableFrom(String.class)); //其中第一个输出false,第二个输出true。
4、附件:
Class.isAssignableFrom()是用来判断一个类Class1和另一个类Class2是否相同或是另一个类的子类或接口。
格式为:
Class1.isAssignableFrom(Class2)
调用者和参数都是java.lang.Class类型。
而instanceof是用来判断一个对象实例是否是一个类或接口的或其子类子接口的实例。
格式是:o instanceof TypeName
第一个参数是对象实例名,第二个参数是具体的类名或接口名,例如 String,InputStream。
- package com.bill99.pattern;
- public class AssignableTest {
- public AssignableTest(String name) {
- }
- /**
- * 判断一个类是否是另一个类的父类
- * 是打印true
- * 否打印false
- */
- public static void testIsAssignedFrom1() {
- System.out.println("String是Object的父类:"+String.class.isAssignableFrom(Object.class));
- }
- /**
- * 判断一个类是否是另一个类的父类
- * 是打印true
- * 否打印false
- */
- public static void testIsAssignedFrom2() {
- System.out.println("Object是String的父类:"+Object.class.isAssignableFrom(String.class));
- }
- /**
- * 判断一个类是否和另一个类相同
- * 是打印true
- * 否打印false
- */
- public static void testIsAssignedFrom3() {
- System.out.println("Object和Object相同:"+Object.class.isAssignableFrom(Object.class));
- }
- /**
- * 判断str是否是Object类的实例
- * 是打印true
- * 否打印false
- */
- public static void testInstanceOf1() {
- String str = new String();
- System.out.print("str是Object的实例:");
- System.out.println(str instanceof Object);
- }
- /**
- * 判断o是否是Object类的实例
- * 是打印true
- * 否打印false
- */
- public static void testInstanceOf2() {
- Object o = new Object();
- System.out.print("o是Object的实例:");
- System.out.println(o instanceof Object);
- }
- public static void main(String[] args) {
- testIsAssignedFrom1();
- testIsAssignedFrom2();
- testIsAssignedFrom3();
- testInstanceOf1();
- testInstanceOf2();
- }
- }
结果:
String是Object的父类:false
Object是String的父类:true
Object和Object相同:true
str是Object的实例:true
o是Object的实例:true
转载于:https://www.cnblogs.com/langtianya/p/5025225.html
Class.isAssignableFrom(Class clz)与instanceof与Class.isInstance(Object obj) 的区别和联系相关推荐
- java instance关键字_Java中instanceof关键字和isInstance()方法的区别是什么
instanceof关键字和isInstance()方法都用于检查对象的类,那么它们之间有什么区别?下面本篇文章就来带大家了解一下instanceof关键字和isInstance()方法之间的区别,希 ...
- class instance java_[Java] Java instanceof 和 Class.isInstance()区别与应用
一.instanceof 关键字 instanceof 关键字用于判断某个实例是否是某个类的实例化对象,形如: String.class instanceofClass"test" ...
- VUE Right-hand side of ‘instanceof’ is not an object 解决方案
VUE Right-hand side of 'instanceof' is not an object 解决方案 参考文章: (1)VUE Right-hand side of 'instanceo ...
- Error in nextTick: “TypeError: Right-hand side of ‘instanceof‘ is not an object“
1.Error in nextTick: "TypeError: Right-hand side of 'instanceof' is not an object" 翻译:next ...
- Class.isAssignableFrom(Class clz)方法 与 instanceof 关键字的区别
Class.isAssignableFrom()是用来判断一个类Class1和另一个类Class2是否相同或是另一个类的子类或接口. 格式为: Class1.isAssignab ...
- java isinstance_java中运算符instanceOf和Class?.isInstance的对比
辨析一个类和一个实例是不是具有实现关系,通常使用 instanceOF和Class>.isInstanceOf(obj),为了能够更好的使用这2中方式,我们需要知道两者的差别. //通常我们会用 ...
- Vue 犯罪指南:TypeError: Right-hand side of 'instanceof' is not an object
背景:在迁移项目从 Vue1.x 到 Vue2.x 时,改动没有过脑子,导致翻车. 转载于:https://www.cnblogs.com/duxing/p/6928246.html
- class转java_[拒绝套路,纯干货]这一百多道 Java 基础问题你掌握了吗?
码农每日一题长按关注,工作日分享一些技术知识点. [每日一题]Java 基本数据类型基础面试题 [每日一题]Java 包装类型装箱拆箱基础面试题 [每日一题]Java 字符串(Part 1)相关面试题 ...
- instanceof, isinstance,isAssignableFrom的区别
instanceof运算符 只被用于对象引用变量,检查左边的被测试对象 是不是 右边类或接口的 实例化.如果被测对象是null值,则测试结果总是false. 形象地:自身实例或子类实例 instan ...
最新文章
- directx 双缓冲 运动 闪烁_24期0利率 | BMW超值福袋开启“双11”购车狂欢节!!
- android模拟器的数据存放,Android模拟器在哪里存储SQLite数据库?
- javase基础socket编程之局域网聊天,局域网文件共享
- 数据结构与算法 / 冒泡排序及其优化的三种方式
- 就算是蜗牛,也有爬到树顶的那一天!~
- LeetCode 900. RLE 迭代器(模拟/二分查找)
- 查看地区的ip段_「教程」CloudFlare 自选 IP优化网站速度
- 如何利用python自动化办公项目_python办公自动化:自动进行word文档处理和排版
- canvas笔记-扩展canvas的context及画椭圆及浏览器兼容问题
- eclipse中简便的aptana安装方法
- css表格强制不换行符,css控制table单元格强制换行与强制不换行
- 数仓建设生命周期_建设数据仓库7个步骤
- julia常用矩阵函数_Julia语言入门
- TiDB集群的GC不回收案例(案情二)
- 天龙八部荣耀版体验服服务器未响应,《天龙八部荣耀版》创新竖版手游官网-合区来了!体验服合区测试解析...
- 百度定位 Android 经纬度出现4.9E-324 问题解决
- SQL注入漏洞(postgresql注入)
- 【Python】EasyGUI实例——实现NJUCM绩点计算器程序
- GDPR: Impact to Your Data Management Landscape: Part 4
- AI医疗落地挑战:需求“实打实存在”,商业价值如何挖掘?
热门文章
- linux多个客户端如何通信_linux实现多个客户端通信进阶
- 太绝了,赠你34张网络知识架构思维导图
- 阿里云 MSE 云原生网关助力斯凯奇轻松应对双 11 大促
- 互动赠新书|当云原生遇到混合云:如何实现“求变”与“求稳”的平衡
- 使用 rocketmq-spring-boot-starter 来配置、发送和消费 RocketMQ 消息
- K8s 原生 Serverless 实践:ASK 与 Knative
- 开发函数计算的正确姿势———为 PHP 运行时添加自定义扩展
- python线性回归预测pm2.5_线性回归--PM2.5预测--李宏毅机器学习
- effective typescript_初学typescript(一) - 来亦何哀
- java db类_Java-jdbc-DBUtils工具类介绍