instanceof和isInstance的区别
instanceof 是一个操作符(类似new, ==等)
( Object reference variable ) instanceof (class/interface type)
if(a instanceof B){
}
表示:a 是不是 B 这种类型
用法:
1. 一个对象是本身类的一个对象
2. 一个对象是本身类所继承类(父类的父类)和接口(接口的接口)的一个对象
3. 所有对象都是Object
4. 凡是null有关的都是false null instanceof(class)
下面是一个例子:
String name = "James";
boolean result = name instanceof String; // 由于 name 是 String 类型,所以返回真
isInstance是Class类的一个方法
class.isInstance (obj)
if(B.Class.isInstance (a)){
};
表示:a 是否能强转为 B 类型
类名.class和对象.getClass()几乎没有区别,因为一个类被类加载器加载后,就是唯一的一个类。
用法:
1. 一个对象是本身类的一个对象
2. 一个对象能被转化为本身类所继承类(父类的父类等)和实现的接口(接口的父接口)强转
3. 所有对象都能被Object的强转
4. 凡是null有关的都是false class.isInstance(null)
实例
1 interface A {
2 }
3
4 class B {
5 }
6
7 class C implements A {
8 }
9
10 class D extends B {
11 }
12
13 public class TestInstanceof {
14
15 public static void main(String[] args) {
16 C t1 = new C();
17 D t2 = new D();
18
19 // obj instanceof class:这个对象是不是这种类型.
20 // 测试1:一个对象是本身类的一个对象
21 System.out.println(t1 instanceof C); // true
22 System.out.println("============");
23
24 // 测试2:一个对象是本身类父类(父类的父类)和接口的一个对象
25 System.out.println(t1 instanceof A); // true
26 System.out.println(t2 instanceof D); // true
27 System.out.println("============");
28
29 // 测试3:所有对象都是object
30 System.out.println(t1 instanceof Object); // true
31 System.out.println(t2 instanceof Object); // true
32 System.out.println("============");
33
34 // 测试4:凡是null相关的都是false
35 System.out.println(null instanceof Object); // false
36 System.out.println(null instanceof B); // true
37 System.out.println("============");
38
39 // class.isInstance(obj):这个对象能不能被转化为这个类
40 // 测试1:一个对象是本身类的一个实例
41 System.out.println(C.class.isInstance(t1)); // true
42 System.out.println("============");
43
44 // 测试2:一个对象能被转化为本身类所继承的类(父类的父类)和实现的接口(接口的父接口)强转
45 System.out.println(A.class.isInstance(t1)); // true
46 System.out.println(B.class.isInstance(t2)); // true
47 System.out.println("============");
48
49 // 测试3:所有对象都能被Object强转
50 System.out.println(Object.class.isInstance(t1)); // true
51 System.out.println(Object.class.isInstance(t2)); // true
52 System.out.println("============");
53
54 // 测试4:凡是和null相关的都是false
55 System.out.println(Object.class.isInstance(null)); // false
56 System.out.println(D.class.isInstance(null)); // false
57
58
59 }
60 }
运行结果:
1 true
2 ============
3 true
4 true
5 ============
6 true
7 true
8 ============
9 false
10 false
11 ============
12 true
13 ============
14 true
15 true
16 ============
17 true
18 true
19 ============
20 false
21 false
参考/补充:
参考--Java中的instanceof和isInstance基础讲解
https://www.2cto.com/kf/201803/732851.html
补充--菜鸟教程-- instanceof 运算符
https://www.runoob.com/java/java-operators.html
instanceof和isInstance的区别的更多相关文章
- instanceof 和isinstance的区别
class A {} class B extends A {} class C extends A {} public class Test { public static void main(Str ...
- Java中instanceof和isInstance区别详解
一次性搞定instanceof和isInstance,instanceof和isInstance长的非常像,用法也很类似,先看看这两个的用法: obj.instanceof(class) 也就是说这 ...
- Java中instanceof和isInstance的具体区别
Java中instanceof和isInstance的具体区别 在Think in Java泛型这一章遇到这个问题,一些博客模糊提到了isInstance是instanceof的动态实现,查阅文档参考 ...
- instanceof和isInstance(Object obj) 和isAssignableFrom(Class cls)的区别和联系
instanceof和isInstance(Object obj) 和isAssignableFrom(Class cls)的区别和联系 编程的时候可能会遇到一个不知道它属于哪个类的 ...
- java instanceof和isInstance的关系 精析
1.instanceof 用途:判断这个object对象是不是这种Class类型. 语法: boolean result = object instanceof Class; 用法: 判断obje ...
- java 中 instanceof 和 isInstance区别
两者的功能是等价的.区别: 1.instanceof 是一个操作符(类似new, ==等): 使用方法: if (ins instanceof String) { //logic } 2.isInst ...
- 【Java 基础】 instanceof和isInstance区别详解
obj instanceof class 也就是说这个对象是不是这种类型, 1.一个对象是本身类的一个对象 2.一个对象是本身类父类(父类的父类)和接口(接口的接口)的一个对象 3.所有对象都是Obj ...
- instanceof、 isinstance 与 isAssignableFrom的区别
instanceof运算符 只被用于对象引用变量,检查左边的被测试对象 是不是 右边类或接口的 实例化.如果被测对象是null值,则测试结果总是false. 形象地:自身实例或子类实例 instanc ...
- instanceof、isInstance、isAssignableFrom的区别
https://stackoverflow.com/questions/3949260/java-class-isinstance-vs-class-isassignablefrom 1. MyCla ...
随机推荐
- 派大星的烦恼MISC
挺有意思的杂项,python将二进制转图片的时候出现的图片不像二维码,想看题解的时候发现网上的大部分题解都是直接转发,更有意思了. 题目是派大星的烦恼,给了我们一张粉红图片,放进010editor里面 ...
- 5分钟入门MP4文件格式
写在前面 本文主要内容包括,什么是MP4.MP4文件的基本结构.Box的基本结构.常见且重要的box介绍.普通MP4与fMP4的区别.如何通过代码解析MP4文件 等. 写作背景:最近经常回答团队小伙伴 ...
- Scrum 冲刺第五天
一.每日站立式会议 1.会议内容 1)进行每日工作汇报 张博愉: 昨天已完成的工作:学习如何编写测试计划 今日工作计划:学习如何编写用户手册 工作中遇到的困难:写文档也有很多讲究的点,花了很多时间 张 ...
- bootstrap table处理后台返回的数据
- 【SDOI2017】相关分析(线段树)
Description 你需要维护一个长度为 \(n\) 的实数对的序列,第 \(i\) 个元素为 \((x_i, y_i)\).现有 \(m\) 次操作: \(\texttt{1 L R}\):设区 ...
- rocketMq指定broker ip地址,适合解决云主机部署问题
在工作中遇到了一个这个问题,就是我们rocketmq是部署在云主机上的 但是我们的开发同事在自己的电脑连接rocketmq链接不上 报错显示Caused by: org.apache.rocket ...
- DVWA各等级文件上传漏洞
file upload 文件上传漏洞,攻击者可以通过上传木马获取服务器的webshell权限. 文件上传漏洞的利用是 够成功上传木马文件, 其次上传文件必须能够被执行, 最后就是上传文件的路径必须可知 ...
- Mycat配置分库分表(垂直分库、水平分表)、全局序列
1. Mycat相关文章 Linux安装Mycat1.6.7.4并实现Mysql数据库读写分离简单配置 Linux安装Mysql8.0.20并配置主从复制(一主一从,双主双从) Docke ...
- 前端使用canvas生成盲水印的加密解密
为了保障信息安全,防止重大信息泄露,并且能够锁定泄露用户,需要对页面展示的图片加入当前用户信息的盲水印,即最终图片外观看起来和原图一样,但是经过解码以后可以识别出水印信息,并且在截图后仍能进行较好的识 ...
- mysql单机多实例配置
Windows上配置多个mysql实例,主要改下配置文件即可,mysql目录如下: my2中主要改两个配置内容 datadir = D:/Program Files/Mysql/mysql-5.7.2 ...