`
ywu
  • 浏览: 455731 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

isInstance

阅读更多

说明:

本系列博客是本人在工作中遇到的一些问题的整理,其中有些资料来源网络博客,有些信息来自出版的书籍,掺杂一些个人的猜想及验证,总结,主要目的是方便知识的查看,并非纯原创。本系列博客会不断更新。原创不容易,支持原创。对于参考的一些其他博客,会尽量把博客地址列在博客的后面,以方便知识的查看。

 

Class类的isInstance(Object obj)作用与instanceof关键字一样,只不过使用instanceof关键字时,关键字左侧是被检测对象,右侧是类型,isInstance方法的参数是被检测对象

 

类层次还是一样,使用ABCD,其定义参看上一篇博客。看下如下测试类:

/**

 * Created with IntelliJ IDEA.

 * User: yejunwu123@gmail.com

 * Date: 2014-08-17 20:56

 * Description:测试java中Object.class.isInstance()方法

 */

public class IsInstanceTest {

    public static void main(String[] args) {

        //创建对象

        A ab = new B();

        A ac = new C();

 

        B bb = new B();

        B bc = new C();

 

        C cc = new C();

 

        D dd = new D();

 

        //A.class.isInstance(..)

        System.out.println("A.class.isInstance(ab) = " + (A.class.isInstance(ab)));

        System.out.println("A.class.isInstance(ac) = " + (A.class.isInstance(ac)));

        System.out.println("A.class.isInstance(bb) = " + (A.class.isInstance(bb)));

        System.out.println("A.class.isInstance(bc) = " + (A.class.isInstance(bc)));

        System.out.println("A.class.isInstance(cc) = " + (A.class.isInstance(cc)));

        System.out.println("A.class.isInstance(dd) = " + (A.class.isInstance(dd)));

        System.out.println("A.class.isInstance(null) = " + (A.class.isInstance(null)));

        System.out.println("-------------------------------------");

        //B.class.isInstance(..)

        System.out.println("B.class.isInstance(ab) = " + (B.class.isInstance(ab)));

        System.out.println("B.class.isInstance(ac) = " + (B.class.isInstance(ac)));

        System.out.println("B.class.isInstance(bb) = " + (B.class.isInstance(bb)));

        System.out.println("B.class.isInstance(bc) = " + (B.class.isInstance(bc)));

        System.out.println("B.class.isInstance(cc) = " + (B.class.isInstance(cc)));

        System.out.println("B.class.isInstance(dd) = " + (B.class.isInstance(dd)));

        System.out.println("B.class.isInstance(null) = " + (B.class.isInstance(null)));

        System.out.println("-------------------------------------");

        //C.class.isInstance(..)

        System.out.println("C.class.isInstance(ab) = " + (C.class.isInstance(ab)));

        System.out.println("C.class.isInstance(ac) = " + (C.class.isInstance(ac)));

        System.out.println("C.class.isInstance(bb) = " + (C.class.isInstance(bb)));

        System.out.println("C.class.isInstance(bc) = " + (C.class.isInstance(bc)));

        System.out.println("C.class.isInstance(cc) = " + (C.class.isInstance(cc)));

        System.out.println("C.class.isInstance(dd) = " + (C.class.isInstance(dd)));

        System.out.println("C.class.isInstance(null) = " + (C.class.isInstance(null)));

        System.out.println("-------------------------------------");

        //D.class.isInstance(..)

        System.out.println("D.class.isInstance(ab) = " + (D.class.isInstance(ab)));

        System.out.println("D.class.isInstance(ac) = " + (D.class.isInstance(ac)));

        System.out.println("D.class.isInstance(bb) = " + (D.class.isInstance(bb)));

        System.out.println("D.class.isInstance(bc) = " + (D.class.isInstance(bc)));

        System.out.println("D.class.isInstance(cc) = " + (D.class.isInstance(cc)));

        System.out.println("D.class.isInstance(dd) = " + (D.class.isInstance(dd)));

        System.out.println("D.class.isInstance(null) = " + (D.class.isInstance(null)));

    }

}

可以看出,即使类DABC不属于同一个继承层次,编译也会通过,instanceof不同。

以下是控制台运行结果:

A.class.isInstance(ab) = true

A.class.isInstance(ac) = true

A.class.isInstance(bb) = true

A.class.isInstance(bc) = true

A.class.isInstance(cc) = true

A.class.isInstance(dd) = false

A.class.isInstance(null) = false

-------------------------------------

B.class.isInstance(ab) = true

B.class.isInstance(ac) = true

B.class.isInstance(bb) = true

B.class.isInstance(bc) = true

B.class.isInstance(cc) = true

B.class.isInstance(dd) = false

B.class.isInstance(null) = false

-------------------------------------

C.class.isInstance(ab) = false

C.class.isInstance(ac) = true

C.class.isInstance(bb) = false

C.class.isInstance(bc) = true

C.class.isInstance(cc) = true

C.class.isInstance(dd) = false

C.class.isInstance(null) = false

-------------------------------------

D.class.isInstance(ab) = false

D.class.isInstance(ac) = false

D.class.isInstance(bb) = false

D.class.isInstance(bc) = false

D.class.isInstance(cc) = false

D.class.isInstance(dd) = true

D.class.isInstance(null) = false

 

不难看出Class类的isInstance(Object obj)作用与instanceof关键字一样。

分享到:
评论

相关推荐

    python issubclass 和 isinstance函数

    ### Python `issubclass` 和 `isinstance` 函数详解 在Python编程中,`issubclass` 和 `isinstance` 是两个非常重要的内置函数,它们可以帮助我们更好地理解和操作类和对象之间的关系。这两个函数虽然功能相似,但...

    详谈Java中instanceof和isInstance的区别

    在Java编程语言中,`instanceof` 和 `Class.isInstance()` 都是用来判断对象是否属于特定类型的工具,但它们之间存在一些微妙的区别。下面将详细解释这两种操作符的用法和差异。 首先,`instanceof` 关键字是Java...

    对python中assert、isinstance的用法详解

    在Python编程语言中,assert语句和isinstance函数是常用的调试和类型检查工具,它们在编写代码时发挥着重要作用。 首先我们来详细讨论assert语句的用法。Assert语句是一种编程中常用的方式,用于在代码中设置断点,...

    Python中请使用isinstance()判断变量类型

    一、isinstance() 在Python中可以使用type()与isinstance()这两个函数判断对象类型,而isinstance()函数的使用上比type更加方便。 复制代码 代码如下: # coding=utf-8   a = 10   def b():  pass   print ...

    Python isinstance函数介绍

    isinstance(object, classinfo) 判断实例是否是这个类或者object object是变量  classinfo 是类型(tuple,dict,int,float)  判断变量是否是这个类型  复制代码 代码如下:  class objA:  pass    A = objA()  ...

    python数据类型判断type与isinstance的区别实例解析

    有两个主要的内置函数用于此目的:`type()` 和 `isinstance()`。它们虽然都能用来检查变量的数据类型,但它们的行为和应用场景有所不同。 `type()` 函数是Python中最直接的数据类型检查工具。它返回一个对象的类型...

    Python isinstance判断对象类型

    复制代码 代码如下:if (typeof(objA) == typeof(String)) { //TODO } 在Python中只需要使用内置的函数isinstance,使用起来非常简单,比如下面的例子: 复制代码 代码如下:class objA: pass A = objA() B = ‘a’,’...

    python isinstance函数用法详解

    `isinstance()`是Python内置的一个类型检查函数,它允许我们检查一个对象是否属于特定的类型或者类的继承链。在Python编程中,了解并正确使用`isinstance()`可以帮助我们编写更加健壮和安全的代码,特别是在处理用户...

    浅谈Python中重载isinstance继承关系的问题

    isinstance()函数是Python中的一个内置函数,用于检查一个对象是否是一个类的实例。它支持类和实例的继承关系判断,同时也支持通过重载来改变判断逻辑。然而,在实际使用中,开发者可能会遇到一些关于如何正确重载...

    深入浅析Python获取对象信息的函数type()、isinstance()、dir()

    本文将深入解析Python中用于获取对象信息的三个核心函数:`type()`、`isinstance()` 和 `dir()`。 首先,`type()` 函数用于确定对象的类型。通过调用 `type()` 并传入一个变量,你可以获取到该变量所指向的对象的...

    602 type() 和isinstance().ipynb

    python基础教程,ipynb格式,一个文件一个知识点。

    Python cookbook.pdf

    flat_list = [item for sublist in nested_list for item in (sublist if isinstance(sublist, list) else [sublist])] ``` 这种方式可以有效处理任意深度的嵌套。 **1.13 Looping in Parallel over Index and ...

    Python核心编程(第二版).pdf (压缩包分2部分,第二部分)

     4.6.4 type()和isinstance()   4.6.5 python类型操作符和内建函数总结   4.7 类型工厂函数   4.8 标准类型的分类   4.8.1 存储模型   4.8.2 更新模型   4.8.3 访问模型   4.9 不支持的...

    Python核心编程(第二版).pdf (压缩包分2部分,第一部分)

     4.6.4 type()和isinstance()   4.6.5 python类型操作符和内建函数总结   4.7 类型工厂函数   4.8 标准类型的分类   4.8.1 存储模型   4.8.2 更新模型   4.8.3 访问模型   4.9 不支持的...

Global site tag (gtag.js) - Google Analytics