Java中类的类型判断技巧以及没有无参构造函数时的应对策略。isInstance()方法解析

类的类型判断

基本数据类型的包装类中,例如Integer、Long这些类是没有无参构造方法的,因此在以下情况中,会出错

具体类型是未知的,只有全路径类名

String typeSte = "java.lang.Integer";
Class<?> typeClass = Class.forName(typeStr);
Object type = typeClass.newInstance();
if (type instanceof Integer) {System.out.println("yes");
}
Caused by: java.lang.NoSuchMethodException: java.lang.Integer.<init>()at java.lang.Class.getConstructor0(Class.java:3082)at java.lang.Class.newInstance(Class.java:412)... 29 more

但String中有无参构造方法,就可以采用这种形式进行判断。

针对没有无参构造方法的类,我们可以采用以下方式

String typeStr = "java.lang.Integer";
Class<?> typeClass = Class.forName(typeStr);
if (typeClass == Integer.class) {System.out.println("yes");
}

若要判断某值是否为某类,只知道类的全路径类名type,某值value

Class<?> typeClass = null;
try {typeClass = Class.forName(type);
} catch (ClassNotFoundException e) {e.printStackTrace();
}
if (!typeClass.isInstance(value)) {System.out.println("yes");
}

isInstance()

​ 确定指定的对象是否与此类表示的对象的赋值兼容。这个方法是Java语言instanceof操作符的动态等效。如果指定的Object参数非空,则该方法返回true,并且可以将其强制转换为由此Class对象表示的引用类型而不会引发ClassCastException。否则返回false。具体来说,如果这个Class对象表示一个已声明的类,如果指定的object参数是所表示的类(或其任何子类)的实例,则此方法返回true;否则返回false。如果此Class对象表示数组类,则如果指定的object参数可以通过标识转换或扩展引用转换转换为数组类的对象,则此方法返回true;否则返回false。如果这个Class对象表示一个接口,如果指定object参数的类或任何超类实现了这个接口,则此方法返回true;否则返回false。如果此Class对象表示基本类型,则此方法返回false。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/169119.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LED驱动控制专用电路

一、基本概述 TM1628是一种带键盘扫描接口的LED&#xff08;发光二极管显示器&#xff09;驱动控制专用IC,内部集成有MCU 数 字接口、数据锁存器、LED 驱动、键盘扫描等电路。本产品质量可靠、稳定性好、抗干扰能力强。 主要适用于家电设备(智能热水器、微波炉、洗衣机、空调…

排序算法-----基数排序

目录 前言 基数排序 算法思想 ​编辑 算法示例 代码实现 1.队列queue.h 头文件 2.队列queue.c 源文件 3.主函数&#xff08;radix_sort实现&#xff09; 算法分析 前言 今天我想把前面未更新完的排序算法补充一下&#xff0c;也就是基数排序的一种&#xff0c;这是跟…

Android 一键屏锁的实现

1.activity里的代码 获取设备管理器 Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//setContentView(R.layout.main);registerReceiver();devicePolicyManager (DevicePolicyManager)getSystemService(DEVICE_POLICY_SER…

ubuntu 使用webrtc_ros 编译linux webrtc库

ubuntu 使用webrtc_ros 编译linux webrtc库 webrtc_ros 使用WebRTC流式传输ROS图像主题 该节点提供了一个WebRTC对等方&#xff0c;可以将其配置为流ROS图像主题并接收发布到ROS图像主题的流。 该节点托管一个提供简单测试页面的Web服务器&#xff0c;并提供可用于创建和配置W…

基于Vue+SpringBoot的APK检测管理系统

项目编号&#xff1a; S 038 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S038&#xff0c;文末获取源码。} 项目编号&#xff1a;S038&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 开放平台模块2.3 软…

电子学会C/C++编程等级考试2021年09月(二级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:字符统计 给定一个由a-z这26个字符组成的字符串,统计其中哪个字符出现的次数最多。输入 输入包含一行,一个字符串,长度不超过1000。输出 输出一行,包括出现次数最多的字符和该字符出现的次数,中间以一个空格分开。如果有多…

Python入门03变量

目录 1 什么是变量2 变量声明3 变量命名规则4 变量类型5 类型转换总结 1 什么是变量 编程语言中变量就像容器一样&#xff0c;可以用来存放东西 我的变量就像杯子一样&#xff0c;可以用来盛放各种饮料。在Python中变量用来存放各种各样的数据&#xff0c;比如整数、浮点数、…

【计算机网络】HTTP 协议

文章目录 前言什么是 HTTP理解 HTTP 请求和响应格式HTTP 的请求格式1. 首行2. 请求头3. 空行4. 正文&#xff08;body&#xff09; HTTP 的响应格式1. 首行2. 响应头3. 空行4. 正文&#xff08;body&#xff09; 首行GET 和 POST 方法有什么区别针对 GET 方法和 POST 方法的区别…

ubuntu挂载硬盘方法

1.关闭服务器加上新硬盘 2.启动服务器&#xff0c;以root用户登录 3.查看硬盘信息 fdisk -l4.格式化分区 找到需要分区的目录,并记录分区的uuid&#xff0c;用于后面修改/etc/fstab永久挂载配置文件 mkfs.ext4 /dev/nvme0n1 mkfs.ext4 /dev/nvme1n1 Filesystem UUID: a1c…

【C++】构造函数和析构函数第四部分(深拷贝和浅拷贝)--- 2023.11.25

目录 什么是浅拷贝&#xff1f;浅拷贝的问题使用深拷贝解决浅拷贝问题结束语 什么是浅拷贝&#xff1f; 如果在一个类中没有人为定义拷贝函数&#xff0c;则系统会提供默认拷贝函数。那么在此默认拷贝函数中主要进行了简单的赋值操作&#xff0c;那这个简单的赋值操作我们一般…

STM32-使用固件库新建工程

参考链接: 【入门篇】11-新建工程—固件库版本&#xff08;初学者必须认认真真看&#xff09;_哔哩哔哩_bilibili 使用的MCU是STM32F103ZET6 。 这篇参考的是野火的资料&#xff0c;可以在“野火大学堂”或者它的论坛上下载。&#xff08;我通常是野火和正点原子的资料混着看的…

leetCode 226.翻转二叉树 递归 + 非递归 + 前中后序 + 层序遍历 【深度和广度优先遍历】

我的往期文章&#xff1a; leetCode 226.翻转二叉树-CSDN博客https://blog.csdn.net/weixin_41987016/article/details/134613347?spm1001.2014.3001.5501 &#xff08;一&#xff09;递归做法&#xff08;深度&#xff09; C代码&#xff1a;前序遍历 class Solution { pu…

android 调用 c++builder

CBuilder使用FireMonkey来开发Android应用程序&#xff0c;并且将应用程序编译为.so文件&#xff0c;以下是一个简单的示例代码&#xff0c;可以调用该文件来显示一个简单的窗口&#xff1a; c #include <FMX.Forms.hpp> #include <FMX.Controls.hpp> class TForm…

java spring-boot 修改打包的jar包名称

修改pom文件 <finalName>lzwd</finalName><build><finalName>lzwd</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plu…

【模型融合】集成学习(boosting, bagging, stacking)原理介绍、python代码实现(sklearn)、分类回归任务实战

文章目录 概览boostingbaggingStacking投票平均Stack 代码实现1. 分类1.0 数据集介绍1.1 boosting1.2 bagging1.3 stacking 2. 回归2.0 数据集介绍stacking 概览 简单来说&#xff0c;集成学习是一种分类器结合的方法&#xff08;不是一种分类器&#xff09;。 宏观上讲集成学…

如何搭建zerotier服务器组网实现内网穿透

小白花了四天的下班时间终于把zerotier网络调通&#xff0c;此刻坐在桌前舒畅地喝口茶&#xff5e;&#xff5e; 下面来详细记录下这几天踩的坑&#xff1a; 起因就在于一直在iPad上用向日葵连接公司电脑的我觉得向日葵的界面用的实在难受&#xff0c;vs code操作十分不灵光&…

LemMinX-Maven:帮助在eclipse中更方便地编辑maven的pom文件

LemMinX-Maven&#xff1a;https://github.com/eclipse/lemminx-maven LemMinX-Maven可以帮助我们在eclipse中更方便地编辑maven工程的pom.xml文件&#xff0c;例如补全、提示等。不用单独安装&#xff0c;因为在安装maven eclipse插件的时候已经自动安装了&#xff1a; 例…

中国茂金属聚丙烯(mPP)行业调研与投资评估报告(2023版)

内容简介&#xff1a; mPP透明性和表面光泽度可与其他一些透明树脂&#xff08;聚碳酸酯PC、聚苯乙烯 PS等&#xff09;相媲美&#xff0c;性能价格比也优于PC、PS、PET 等&#xff0c;因此被广泛应用于透明包装、医疗器械、家庭用品、一般工业等领域&#xff0c;其中医疗卫生…

记一次简单的PHP反序列化字符串溢出

今天朋友给的一道题&#xff0c;让我看看&#xff0c;来源不知&#xff0c;随手记一下 <?php // where is flag error_reporting(0); class NFCTF{ public $ming,$id,$payload,$nothing;function __construct($iii){$this->ming$ii…

es6中的import导入模块 和 export导出模块

es6中的import导入模块 和 export导出模块 一、定义二、使用1.默认导出导入2..命名导出导入3.命名导出&#xff08;Named Export&#xff09;与默认导出&#xff08;Default Export&#xff09;结合使用 三、总结 一、定义 功能&#xff1a;用于导入和导出模块的内容。 静态加载…