Java对象类型的判断详解
作者:zeling1005 发布时间:2023-07-26 09:55:07
标签:Java,对象类型
instanceof
判断某个对象是否是某个类的实例或者某个类的子类的实例。它的判断方式大概是这样的:
public<T> boolean function(Object obj, Class<T> calzz) {
if (obj == null) {
return false;
}
try {
T t = (T) obj;
return true;
} catch (ClassCastException e) {
return false;
}
}
Class.equals()
这种方式比较的类型,一定是本身才返回true,子类或者父类都返回false;
// B是A的子类,C是B的子类
B b = new B();
// false
System.out.println(b.getClass().equals(A.class));
// true
System.out.println(b.getClass().equals(B.class));
// false
System.out.println(b.getClass().equals(C.class));
PS:b.getClass().equals(A.class)等同于b.getClass() == A.class
Class.isInstance()
这个方法跟instanceof完全等价。
// B是A的子类,C是B的子类
B b = new B();
// true
System.out.println(A.class.isInstance(b));
// true
System.out.println(B.class.isInstance(b));
// false
System.out.println(C.class.isInstance(b));
Class.isAssignableFrom
判断某个类是否是另一个类和其子类。
// B是A的子类,C是B的子类
// false
System.out.println(B.class.isAssignableFrom(A.class));
// true
System.out.println(B.class.isAssignableFrom(B.class));
// true
System.out.println(B.class.isAssignableFrom(C.class));
以上所述是小编给大家介绍的Java对象类型的判断详解整合,希望对大家有所帮助
来源:https://blog.csdn.net/u014532217/article/details/79254854


猜你喜欢
- Eclipse提供了一个可扩展插件的开发系统。这就使得Eclipse在运行系统之上可以实现各种功能。这些插件也不同于其他的应用(插件的功能是
- 首先我们要做的就是先把IIS(Internet信息服务)打开,我用的是win8 的系统,所以这里以win8系统的操作来讲一、IIS的一些事先
- 业务场景通常微服务对于用户认证信息解析有两种方案在 gateway 就解析用户的 token 然后路由的时候把 userId 等相关信息添加
- 我们已经有文章向你描述如何使用<include />标签来重用和共享你的布局代码。这篇文章将向你阐述<merge />
- 1、配置 IDEA 的 Maven 环境单击菜单栏中的 File → Settings → Build, Ex
- 在实际业务中,当后台数据发生变化,客户端能够实时的收到通知,而不是由用户主动的进行页面刷新才能查看,这将是一个非常人性化的设计。有没有那么一
- 一. 关于变量在之前的文章中,已经给大家详细地介绍过变量相关的内容,比如变量的概念、命名规范、变量的定义及底层原理等内容。但其实变量还有作用
- 使用 Spring 时,XML 和注解是使用得最多的两种配置方式,虽然是两种完全不同的配置方式,但对于 IOC 容器来说,两种方式的不同主要
- 前言此节假日为严格按照国家要求的双休和法定节假日并且包含节假日的补班信息,大家可根据自己的需求自定义处理哦。以下为Maven配置,是程序用到
- 学习spring依赖注入的时候碰到这个坑,折腾了许久,记录一下以防其他小伙伴入坑!该异常主要原因是因为JDK与Spring版本不一致。要么更
- delphi dll 源码:library dllres; type char1
- Android Studio生成的APP默认图标是经典的机器人图标。可以通过Android Studio实现APP图标和名称的修改。1 修改
- 用Java编写简单的五子棋,供大家参考,具体内容如下前言这两天在空闲时间做了个五子棋项目,分享给大家看一下,界面是这样的:界面很丑我知道,本
- private void btnSetOk_Click(object sender, EventArgs e) &nb
- 问题描述在应用MyBatis时,使用对象关系映射,将对象和Aliase映射起来。在Mybatis的文档明确写出,如果你没有明确定义实体类的A
- 本文实例讲述了微信js sdk invalid signature签名错误问题的解决方法。分享给大家供大家参考,具体如下:/**最近在做微信
- 本文实例讲述了C#使用文件流读取文件的方法。分享给大家供大家参考。具体如下:using System;using System.IO;nam
- 模式介绍桥接模式(Bridge模式)是指:将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变。是一种结构型设计模式。Bridge模式
- java读取文件里面部分汉字内容乱码读取一个txt文件,到代码中打印出来,发票有部分汉字的内容是乱码的。我开始的方式是这样的, 如下,这是完
- DataTableDataTable 是 C# 中常用的一种数据表格类型,它类似于数据库中的表格,可以用来存储和处理数据。DataTable