首页 > 编程语言 >java-----instanceof与getClass的区别

java-----instanceof与getClass的区别

时间:2024-09-14 17:05:17浏览次数:8  
标签:instanceof getClass Parent ----- Child obj true

java-----instanceof与getClass的区别
在比较一个类是否和另一个类属于同一个类实例的时候,我们通常可以采用instanceof和getClass两种方法通过两者是否相等来判断,但是两者在判断上面是有差别的,下面从代码中看看区别:

public class Test
{
	public static void testInstanceof(Object x)
	{
		System.out.println("x instanceof Parent:  "+(x instanceof Parent));
		System.out.println("x instanceof Child:  "+(x instanceof Child));
		System.out.println("x getClass Parent:  "+(x.getClass() == Parent.class));
		System.out.println("x getClass Child:  "+(x.getClass() == Child.class));
	}
	public static void main(String[] args) {
		testInstanceof(new Parent());
		System.out.println("---------------------------");
		testInstanceof(new Child());
	}
}
class Parent {
 
}
class Child extends Parent {
 
}
/*
输出:
x instanceof Parent:  true
x instanceof Child:  false
x getClass Parent:  true
x getClass Child:  false
---------------------------
x instanceof Parent:  true
x instanceof Child:  true
x getClass Parent:  false
x getClass Child:  true
*/

从程序输出可以看出,instanceof进行类型检查规则是:你属于该类吗?或者你属于该类的派生类吗?而通过getClass获得类型信息采用==来进行检查是否相等的操作是严格的判断。不会存在继承方面的考虑;

instanceof 与 getClass

1 instanceof
子类对象 Instanceof 父类class,为true

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (!(obj instanceof WimComplexProperty)) {
            return false;
        }
        JavaBean other = (JavaBean) obj;
        return Objects.equals(this.getId(), other.getId());

2 getClass
子类对象 obj.getClass() == 父类class,为false

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null || getClass() != obj.getClass()) {
            return false;
        }
        JavaBean other = (JavaBean) obj;
        return Objects.equals(this.getId(), other.getId());

标签:instanceof,getClass,Parent,-----,Child,obj,true
From: https://www.cnblogs.com/sunupo/p/18414337

相关文章

  • [Vue] v-once、v-memo 和 key 优化组件性能
    前言key、v-once和v-memo都是Vue提供的用于优化性能的工具,主要目的是减少不必要的渲染和更新操作,从而提升应用的性能。key相关的就不用多说了,[Vue]v-forkey用index会出现什么问题。v-once这个很简单,仅渲染元素和组件一次,并跳过之后的更新。在随后的重新渲染,元素/组......
  • 15-1git使用
    git使用用户名:tong-xin123123密码:Tx123456版本控制代码保存到本地,电脑坏了,代码就丢了。或者多个同事各自写一部分的情况。管理文件等内容的修改历史跨区域多人协同开发追踪和记载文件历史记录记录软件开发过程统计工作量减轻开发人员负担并行开发版本控制工具gitS......
  • [np-ml] Ridge Regression
    算法描述Ridgeregressionusesthesamesimplelinearregressionmodelbutaddsanadditionalpenaltyonthe\(L2\)-normofthecoefficientstothelossfunction.ThisissometimesknownasTikhonovregularization.Inparticular,theridgemodelisthesame......
  • self-play RL学习笔记
    让AI用随机的路径尝试新的任务,如果效果超预期,那就更新神经网络的权重,使得AI记住多使用这个成功的事件,再开始下一次的尝试。——llyaSutskever这两天炸裂朋友圈的OpenAI草莓大模型o1和此前代码能力大幅升级的Claude3.5,业内都猜测经过了自博弈强化学习(self-playRL)。1......
  • How to Add a Built-in Function to TiDB Using a Cursor in 20 Minutes
    作者:ngautInthistutorial,we’llwalkyouthroughthestepstoaddaflexiblebuilt-infunctiontoTiDBthatleveragesLLMtoprocessdata.We’llusetheAI_PROCESSfunctionasanexample,whichtakestwoparameters:adatastringandatask_description......
  • OpenAI 的 o1 与 GPT-4o:深入探究 AI 的推理革命
    简介在不断发展的人工智能领域,OpenAI再次凭借其最新产品突破界限:o1模型和GPT-4o。作为一名几十年来一直报道科技的人,我见过不少伪装成革命的增量更新。但这个?这不一样。让我们拨开炒作的迷雾,看看这些新模型到底带来了什么。推荐文章《AI交通管理系列之使用Python......
  • OpenAI 的 GPT-o1(GPT5)详细评论 OpenAI 的 Strawberry 项目具有博士级智能
    简介OpenAI的GPT-5又名Strawberry项目,又名GPT-o1,又名博士级LLM现已推出。几个月来一直备受关注,从结果来看,它不负众望。OpenAI-o1是一系列模型,旨在增强科学、编码和数学等复杂领域的问题解决能力。推荐文章《AI交通管理系列之使用Python进行现代路线优化最......
  • react-pdf预览在线PDF的使用
    1、在react项目中安装react-pdf依赖包建议安装8.0.2版本的react-pdf,如果安装更高版本的可能出现一些浏览器的兼容性问题;[email protected] 1、PC端的使用1.1、封装一个组件:PdfViewModal.tsximportReact,{useState}from'react'import{Modal,Spin,......
  • 第158天:安全开发-Python-Socket编程&反弹Shell&分离免杀&端口探针&域名爆破
    前置知识使用socket模块1.导入模块首先,你需要导入Python的socket模块。importsocket2.创建套接字使用socket.socket()函数创建一个新的套接字。这个函数可以接收两个参数:地址族和套接字类型。   地址族(AddressFamily):AF_INET用于IPv4,AF_INET6用于IP......
  • 零基础快速上手HarmonyOS ArkTS开发5---从简单的页面开始2---使用List组件构建列表、G
    接着继续往下学习页面布局的知识。最近发现之前学习这一章节的内容在官方已经被下了,替换成了另外一个案例了(https://developer.huawei.com/consumer/cn/training/course/slightMooc/C101717497398588123):而且整个视频的风格也不一样了,先看看之前的这个美女讲师:再看看现在的:哇塞,档次......