`
ywu
  • 浏览: 456950 次
  • 性别: 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...

    0397-极智开发-解读python isinstance()用法

    0397_极智开发_解读python isinstance()用法

    对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 不支持的...

Global site tag (gtag.js) - Google Analytics