instanceof和相关函数
instanceof:如果左边对象是右边类型所表示类(或任意一子类)的一个实例,则返回true,否则false。判断左边真实类型是不是右边的类或它的派生类。
//实例一
Object o= new Long(112);
if(o instanceof Long){
System.out.println(true);//ok
}else{
System.out.println(false);
}
//实例二
if(new Object() instanceof Long){
System.out.println(true);
}else{
System.out.println(false);//ok
}
关于instanceof的底层实现推荐阅读:
java中关于instanceof 的问题? - 回答作者: RednaxelaFX
Java instanceof 关键字是如何实现的? - 回答作者: RednaxelaFX
instanceof的使用限制比较严格(只可将某对象与命名类型进行比较,而不能与Class对象作比较),作为替代品Class的isInstance()方法相对更灵活。
public boolean isInstance(Object obj):
判定指定的 Object
是否与此 Class
所表示的对象赋值兼容。此方法是 Java 语言 instanceof
运算符的动态等效方法。如果指定的 Object
参数非空,且能够在不引发 ClassCastException
的情况下被强制转换成该 Class
对象所表示的引用类型,则该方法返回 true;否则返回 false
。
特别地,当该 Class
对象表示一个已声明的类时,若指定的 Object
参数是所表示类(或其任一子类)的一个实例,则此方法返回 true
;否则返回 false
。如果此 Class
对象表示一个数组类,且通过身份转换或扩展引用转换,指定的 Object
参数能转换为一个数组类的对象,则返回 true
;否则返回 false
。如果此 Class
对象表示一个接口,且指定 Object
参数的类或任一超类实现了此接口,则此方法返回 true
;否则返回 false
。如果此 Class
对象表示一个基本类型,则此方法返回 false
。
参数:
obj
- 要检查的对象
返回:
如果 obj
是此类的实例,则返回 true
另外Class还有一个很有用的函数isAssignableFrom。
public boolean isAssignableFrom(Class<?> cls): 此方法能测试指定 Class
参数所表示的类型能否转换为此 Class
对象所表示的类型。
判定此 Class
对象所表示的类或接口与指定的 Class
参数所表示的类或接口是否相同,或是否是其超类或超接口。如果是则返回 true
;否则返回 false
。如果该 Class
表示一个基本类型,且指定的 Class
参数正是该 Class
对象,则该方法返回 true
;否则返回 false
。
特别地,通过身份转换或扩展引用转换,此方法能测试指定 Class
参数所表示的类型能否转换为此 Class
对象所表示的类型。有关详细信息,请参阅 Java Language Specification 的第 5.1.1 和 5.1.4 节。
参数:
cls
- 要检查的 Class
对象
返回:
表明 cls
类型的对象能否赋予此类对象的 boolean
值
抛出:
NullPointerException
- 如果指定的 Class 参数为 null。
instanceof和相关函数的更多相关文章
- php类型的相关函数,运算符,条件判断,循环
类型的相关函数 函数的原型 :函数返回值类型 函数名(参数1类型 参数1,参数2类型 参数2--) 1, 任何一个函数,都要考虑它是否有返回值以及该返回值的类型,如果该函数没有返回值,就用void来 ...
- php -- instanceof、class_exists、insterface_exists、method_exists、get_class、get_parent_class
class_exists:类是否存在 在创建对象之前判断类是否存在,如果不存在就应该先加载类,再创建对象,容错. interface_exists:接口是否存在 method_exists:方法是否存 ...
- PHP 面向对象编程和设计模式 (1/5) - 抽象类、对象接口、instanceof 和契约式编程
PHP高级程序设计 学习笔记 2014.06.09 什么是面向对象编程 面向对象编程(Object Oriented Programming,OOP)是一种计算机编程架构.OOP 的一条基本原则是计算 ...
- JavaScript instanceof vs typeof
Use instanceof for custom typesvar ClassFirst = function () {};var ClassSecond = function () {};var ...
- instanceof 运算符
java中的instanceof=======>二元运算符 用法: result = object instanceof class 参数: result 是boolean类型 object 是 ...
- JS中typeof与instanceof的区别
JavaScript 中 typeof 和 instanceof 常用来判断一个变量是否为空,或者是什么类型的.但它们之间还是有区别的: Typeof typeof 是一个一元运算,放在一个运算数之前 ...
- 检测对象是否为数组 instanceof
[1,2] instanceof Array //true Object.prototype.toString.apply([]); === "[object Array]"; O ...
- PHP中instanceof关键字
instanceof关键字是PHP5新增的新成员.在一些情况下,我们希望确定某个类属于哪种特定的类型.或者是否实现了特定的接口,这时我们就可以使用这个关键字确定一个对象是否是某个特定的类型,是否是从某 ...
- js中typeof和instanceof
对于typeof和instanceof,我们经常用来检测数据的类型.typeof可以检测Number.Boolean.String.Undefined类型,对于其他类型的数据都返回为object:而i ...
随机推荐
- docker上安装eslaticsearch
一 elasticsearch安装 1 查找镜像: docker search elasticsearch 可以看到如下截图; 2 拉取镜像 docker pull elasticsearch 我并没 ...
- js获取复选框内容
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script sr ...
- Qt 学习之路 2(3):Hello, world!
豆子 2012年8月22日 Qt 学习之路 2 107条评论 想要学习 Qt 开发,首先要搭建 Qt 开发环境.好在现在搭建 Qt 开发环境还是比较简单的.我们可以到 Qt 官方网站找到最新版 ...
- P2264 情书
传送门 正常会想到字典树 然鹅数据怎么小直接map也能过 然后就写map暴力匹配了 毫无思维难度,毫无代码难度 注意逗号算单词分隔符,如果有句号就算另一句 同一句的单词重复出现只计算一次贡献 再开个m ...
- 在U盘打造个性化PE工具箱+KALI(Persistence)+存储的工作站
基本工具: kali-linux-2018.2-amd64 原版镜像:https://www.kali.org/downloadsWin32DiskImager yunfile 下载较慢,建议自行百度 ...
- Spring实现AOP
转载: https://blog.csdn.net/tolcf/article/details/49133119 [框架][Spring]XML配置实现AOP拦截-切点:JdkRegexpMethod ...
- 创建第一个vue工程
vue创建项目(npm安装→初始化项目) 第一步npm安装 首先:先从nodejs.org中下载nodejs 图1 双击安装,在安装界面一直Next 图2 图3 图4 直到Finish ...
- java——设计一个支持push,pop,top、在恒定时间内检索最小元素的栈。
普通方法: 需要另外一个栈 用来存放每一时刻的min值 巧妙版: 只需要一个stack,stack中存的是与min的差值 但由于min是两个整数之间的差值,有可能会出现差值超过整数边界值的情况,因此要 ...
- mysql——索引失效
索引失效的几种情况:https://www.jianshu.com/p/9c9a0057221f
- Python Pandas -- Series
pandas.Series class pandas.Series(data=None, index=None, dtype=None, name=None, copy=False, fastpath ...