`

[Java]instanceof和getClass()的区别

    博客分类:
  • Java
 
阅读更多

getClass() will be useful when you want to make sure your instance is NOT a subclass of the class you are comparing with.

 

class A { }

class B extends A { }

Object o1 = new A();
Object o2 = new B();

o1 instanceof A => true
o1 instanceof B => false
o2 instanceof A => true // <================ HERE
o2 instanceof B => true

o1.getClass().equals(A.class) => true
o1.getClass().equals(B.class) => false
o2.getClass().equals(A.class) => false // <===============HERE
o2.getClass().equals(B.class) => true
 
分享到:
评论

相关推荐

    Java instanceof和getClass()区别实例解析

    Java instanceof 和 getClass() 区别实例解析 Java instanceof 和 getClass() 是 Java 语言中两个常用的操作符,用于判断对象的类型或类别。然而,很多开发者对这两个操作符的使用和区别不够了解。在本文中,我们将...

    java中instanceof和getClass()的区别分析

    在Java编程语言中,`instanceof` 和 `getClass()` 是两个重要的操作符和方法,它们在类型检查和对象实例识别方面发挥着关键作用。本文将深入探讨这两个概念的区别及其应用场景。 `instanceof` 关键字主要用于判断一...

    java中instanceof与Class的等价性代码示例

    Java 中 instanceof 与 Class 的等价性代码示例 ...`instanceof` 运算符和 `Class` 类在 Java 中都是非常重要的概念,它们可以帮助我们实现更多的类似操作,从而提高我们编写 Java 程序的效率和可读性。

    详谈Java中instanceof和isInstance的区别

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

    java 泛型类的类型识别示例

    在Java中,RTTI允许我们在程序运行时检查和操作对象的实际类型,这是通过使用`instanceof`关键字和`getClass()`方法实现的。在泛型类中,虽然类型参数在编译时被擦除,但仍然可以通过一些方式获取类型信息。 泛型类...

    java effective 第二版中英文二份文件

    14. **避免在equals()中使用instanceof和 getClass()**:正确的equals()实现应基于对象的属性,而非它们的类。 15. **覆盖equals()时,也应覆盖hashCode()**:这样可以确保对象在哈希表(如HashMap)中的正确行为。...

    Java反射之Constructor、Method、Field使用及说明

    反射是Java的一项强大功能,它允许程序在运行时检查类和对象的结构,甚至可以创建和操作对象而无需直接实例化或调用方法。 #### 二、反射基础 ##### 运行时类型信息 (RTTI) 在Java中,**运行时类型信息**(RTTI)...

    深入理解Java的反射机制Java系列2021.pdf

    RTTI在Java中主要通过两种形式存在:一种是传统的类型转换,也就是instanceof关键字和类的cast方法;另一种是反射机制。RTTI的实现依赖于Java类模型中的Class类,它是所有类的最终父类,每个类在运行时都会有一个...

    Java泛型指南

    Java泛型提供了强大的类型安全性和代码复用性,通过类型参数、通配符、类型擦除等机制,使得Java程序在类型管理上更加灵活和高效。然而,理解和使用泛型也存在一定的复杂性,尤其是当涉及到类型擦除、通配符以及多重...

    java泛型深入.pdf

    Java泛型深入的内容涵盖泛型的基本概念、泛型类、接口、方法以及泛型的使用限制和高级特性。 首先,Java中的泛型允许定义方法、接口、类和变量时不指定具体的数据类型,而是在使用的时候再通过泛型类型参数来指定...

    在JavaScript中调用Java类和接口的方法

    在JavaScript中调用Java类和接口的方法是一个涉及多个知识点的过程,首先,我们需要了解如何在JavaScript环境中访问和使用Java对象。接下来将详细说明这些知识点。 ### Java.type()函数 在JavaScript中,`Java....

    java秋招笔试面试知识点总结

    以上是对Java基础知识点的总结,内容覆盖了内存区域划分、对象和数组存储、构造方法与代码块、this关键字、单例模式、继承与接口、多态、final关键字、抽象类和接口、instanceof关键字、Object类方法以及内部类等。...

    java练习题库

    而`getClass()`方法返回对象的实际类,`a1`和`a2`的实际类分别是`Dog`和`Animal`,因此`a1.getClass() == a2.getClass()`返回`false`。 #### 二、数据类型转换 **6. 包装类与类型转换** - 要把一个`int`类型的变量...

    java 多态 经典讲解

    运行时类型识别(RTTI)通过`instanceof`关键字和`getClass()`方法提供了一种检查对象实际类型的方式,从而安全地执行向下类型转换。 #### 八、多态的陷阱:置换私有方法 在多态的场景下,私有方法不参与多态机制,...

    东北大学 研究生高级Java语言试题2017

    1. J2SE:Java 2 Platform Standard Edition,是Java平台标准版,主要用于开发和部署桌面、服务器端和嵌入式环境中的Java应用程序。 2. Overload(重载):是指在同一个类中可以存在一个以上的同名方法,只要它们的...

    JAVA2 反射技术 pdf

    反射是Java语言的一项强大特性,它使得Java程序具有高度的灵活性和扩展性。通过反射,我们可以实现诸如动态代理、框架开发等功能。然而,需要注意的是,反射可能会降低代码的性能,并可能破坏封装性。因此,在实际...

    Java面试宝典2018

    - **`interface`**:只能包含抽象方法(Java 8及以后版本中还可以包含默认方法和静态方法),不允许有状态。 #### 25. abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized? - **`...

    java对象类余接口的学习

    Java中的继承和多态是面向对象编程的重要概念,它们提供了代码重用和抽象的能力,使得程序设计更加灵活和高效。 1. **为什么要用继承** 继承是为了实现代码的复用和类的层次结构。它允许创建一个新的类(子类)从...

Global site tag (gtag.js) - Google Analytics