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 ...
随机推荐
- XSS挑战赛(3)
查看关键代码: <?php ini_set("display_errors", 0); $str = $_GET["keyword"]; $str00 = ...
- [ASIS 2019]Unicorn shop
点击进去之后是一个购买独角兽的界面,有四种类型的独角兽,前三种的价格比较便宜,最后的独角兽价格比较贵. 我们先尝试购买前三种独角兽,输入id,然后price输入9 然后就告诉我商品错了,可能复现靶场这 ...
- 使用k8s部署springboot+redis简单应用
准备 本文将使用k8s部署一个springboot+redis应用,由于是示例,所以功能比较简单,只有设置值和获取值两个api. (1)设置值 (2)获取值 构建Web应用 (1)创建一个spring ...
- uni与小程序,vue的区别
标签区别 uni使用小程序的标签,vue使用web端的标签 标签名变化的: 标签描述\类别 vue uniapp 文本 span\font text 链接 a navigator/ router-li ...
- 百度前端技术学院-基础-day2
2020.9.15 今天是学习前端基础技术的第二天,今天制作了一个在线简历,纯html的那种.帮助我复习了以前的基础知识,也增加了新的知识点,比如制作列表可以用fieldset来整合数据. 我的在线简 ...
- 判断wangeidtor中输入框内容为空
在我做的项目中,产品没有要求图片多媒体等,暂时只需要标题正文表格之类的,在保存的时候校验内容不为空 刚开始考虑的是editor.txt.html()获取到html片段在判断标签中的值,但是太过繁琐 后 ...
- 七、TestNG传递参数2
数据提供者本身可以接受两个类型的参数:Method和ITestContext 在创建@DataProvider方法是可以有四种格式如图: 第一种在上一篇中有学到 1-Methode参数使用 @Data ...
- .net core WebAPI性能监控-MiniProfiler与Swagger集成
------------恢复内容开始------------ 安装Nuget Install-Package MiniProfiler.AspNetCore.Mvc Install-Package M ...
- 安卓和ios的app证书过期的相关问题汇总
一,ios的APP的发布流程请见:ios的APP的发布流程 http://www.jianshu.com/p/b1b77d804254 这篇文章写得很好很全面 二,app证书过期了怎么办: IOS的情 ...
- MongoDB加索引DB崩溃的问题
项目原因,最近在对MongoDB进行数据存储优化 原有问题: 日志数据量比较大,存到一张表,需要手工定时删除数据,且删除数据时间按天算 数据会定时打包到HDFS,查询时间很慢,需要优化 机器内存占 ...