1. instanceof 是一个操作符

使用方法:

1
2
if(a instanceof B){
}

表示:a 是不是 B 这种类型

2. isInstance是Class类的一个方法

1
public boolean isInstance(Object obj)

使用方法:

1
2
3
if(B.Class.isInstance(a)){
 
};

表示:

a 是否能强转为 B 类型

官方文档:

判定指定的 Object 是否与此 Class 所表示的对象赋值兼容。此方法是 Java 语言 instanceof 运算符的动态等效方法。如果指定的 Object 参数非空,且能够在不引发 ClassCastException 的情况下被强制转换成该 Class 对象所表示的引用类型,则该方法返回 true;否则返回 false。

特别地,当该 Class 对象表示一个已声明的类时,若指定的 Object 参数是所表示类(或其任一子类)的一个实例,则此方法返回 true;否则返回 false。

如果此 Class 对象表示一个数组类,且通过身份转换或扩展引用转换,指定的 Object 参数能转换为一个数组类的对象,则返回 true;否则返回 false。

如果此 Class 对象表示一个接口,且指定 Object 参数的类或任一超类实现了此接口,则此方法返回 true;否则返回 false。如果此 Class 对象表示一个基本类型,则此方法返回 false。

interface A {
} class B {
} class C implements A {
} class D extends B {
} public class TestInstanceof { public static void main(String[] args) {
C t1 = new C();
D t2 = new D(); // obj instanceof class:这个对象是不是这种类型.
// 测试1:一个对象是本身类的一个对象
System.out.println(t1 instanceof C); // true
System.out.println("============"); // 测试2:一个对象是本身类父类(父类的父类)和接口的一个对象
System.out.println(t1 instanceof A); // true
System.out.println(t2 instanceof D); // true
System.out.println("============"); // 测试3:所有对象都是object
System.out.println(t1 instanceof Object); // true
System.out.println(t2 instanceof Object); // true
System.out.println("============"); // 测试4:凡是null相关的都是false
System.out.println(null instanceof Object); // false
System.out.println(null instanceof B); // true
System.out.println("============"); // class.isInstance(obj):这个对象能不能被转化为这个类
// 测试1:一个对象是本身类的一个实例
System.out.println(C.class.isInstance(t1)); // true
System.out.println("============"); // 测试2:一个对象能被转化为本身类所继承的类(父类的父类)和实现的接口(接口的父接口)强转
System.out.println(A.class.isInstance(t1)); // true
System.out.println(B.class.isInstance(t2)); // true
System.out.println("============"); // 测试3:所有对象都能被Object强转
System.out.println(Object.class.isInstance(t1)); // true
System.out.println(Object.class.isInstance(t2)); // true
System.out.println("============"); // 测试4:凡是和null相关的都是false
System.out.println(Object.class.isInstance(null)); // false
System.out.println(D.class.isInstance(null)); // false }
}
true
============
true
true
============
true
true
============
false
false
============
true
============
true
true
============
true
true
============
false
false

Java中的instanceof和isInstance基础讲解的更多相关文章

  1. Java 中的instanceof简单讲解

    Java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例. 用法:resu ...

  2. 【Java基础】1、java中的instanceof

    instanceof是Java.php的一个二元操作符(运算符),和==,>,<是同一类东西.由于它是由字母组成的,所以也是Java的保留关键字.它的作用是判断其左边对象是否为其右边类的实 ...

  3. java 中的instanceof的用法

    instanceof 运算符是Java.php的一个二元操作符(运算符),和==.>.<是同一类东西.由于它是由字母组成的,所以也是Java的保留关键字.它的作用是判断其左边对象是否为其右 ...

  4. java中的instanceof

    instanceof是Java.php的一个二元操作符(运算符),和==,>,<是同一类东西.由于它是由字母组成的,所以也是Java的保留关键字.它的作用是判断其左边对象是否为其右边类的实 ...

  5. java 中的instanceof

    java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例. 用法:resu ...

  6. Java 中的instanceof 运算符

    Java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例. 用法:resu ...

  7. java中的instanceof用法

    Java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例. 用法:     ...

  8. [zz]Java中的instanceof关键字

    1.What is the 'instanceof' operator used for? stackoverflow的一个回答:http://stackoverflow.com/questions/ ...

  9. Java 中的等待唤醒机制透彻讲解

    线程的状态 首先了解一下什么是线程的状态,线程状态就是当线程被创建(new),并且启动(start)后,它不是一启动就进入了执行状态(run),也不是一直都处于执行状态. 这里说一下Java 的Thr ...

随机推荐

  1. 手写简单PE

    环境工具:Windows 10 010Editor 目标程序功能: 调用MessageBoxA弹出消息框. 1.构造DOS头 typedef struct _IMAGE_DOS_HEADER { // ...

  2. 使用proxyTable解决vue里的跨域问题

    由于没有跨域的接口,所以,用8080端口请求8081端口,来模拟跨域.跨域会出现下面报错. 1.找到config文件夹下index.js,在proxyTable对象里复制以下代码: proxyTabl ...

  3. 修改Macros的值

    修改模板的macro  修改对应主机的macro

  4. python迭代器与生成器详解

    迭代器与生成器 迭代器(iterator)与生成器(generator)是 Python 中比较常用又很容易混淆的两个概念,今天就把它们梳理一遍,并举一些常用的例子. for 语句与可迭代对象(ite ...

  5. 如何在已安装Python解释器的Linux上更新Python

    在Linux环境下升级Python (附:解决pip报错 subprocess.CalledProcessError: Command '('lsb_release', '-a')' returned ...

  6. 了解ip相关知识

    最近一直扫盲,作为一个编程工作者,其实涉及的东西很广,但也一直没有深入一些网络的概念. 内内网IP局域网,网线都是连接在同一个 交换机上面的,也就是说它们的IP地址是由交换机或者路由器进行分配的.而且 ...

  7. Python Moment.js api

    moment.js(js date)日期格式化处理插件强大,官方网站:http://momentjs.com/你也可以查看官方网站E文原版moment.js api.当前日期格式化 moment(). ...

  8. Python3.* 和Python2.*的区别

    许多Python初学者都会问:我应该学习哪个版本的Python.对于这个问题,我的回答通常是“先选择一个最适合你的Python教程,教程中使用哪个版本的Python,你就用那个版本.等学得差不多了,再 ...

  9. Zookeeper在Linux平台Java开发环境配置(命令行)

    1.安装必要软件 首先需要安装ant, automake, autoconf, cppunit.在ubuntu上可以直接用apt-get install安装 2.Build Zookeeper 切换到 ...

  10. Spring Boot使用AOP实现REST接口简易灵活的安全认证

    我们继续上一篇文章的分析,本文将通过AOP的方式实现一个相对更加简易灵活的API安全认证服务. 我们先看实现,然后介绍和分析AOP基本原理和常用术语. 一.Authorized实现 1.定义注解 pa ...