Java中isAssignableFrom与instanceof的区别

news/2024/11/20 23:33:01/

最近看到一个新的用法isAssignableFrom,和以前学的instanceof类似的效果,于是记录一下。

一、isAssignableFrom

假设有两个类Class1和Class2。Class1.isAssignableFrom(Class2)表示:

  1. 类Class1和Class2是否相同。
  2. 确定一个类Class2是不是继承来自于另一个父类Class1

调用者和参数都是java.lang.Class类型,两个比较的都是Class对象。

二、instanceof

用来判断一个对象是否是一个类及其子类或接口及其子接口的的实例。

格式:object instanceof TypeName

第一个参数是对象实例名,第二个参数是具体的类名或接口名

三、isAssignableFrom测试

示例代码如下:

/*** @author qinxun* @date 2023-06-12* @Descripion: 父类*/
class Parent {
}/*** @author qinxun* @date 2023-06-12* @Descripion: 子类*/
class Child extends Parent{
}/*** @author qinxun* @date 2023-06-12* @Descripion: isAssignableFrom测试*/
public class IsAssignableFromDemo {public static void main(String[] args) {// isAssignableFrom比较的是Class对象 输出trueSystem.out.println(Parent.class.isAssignableFrom(Child.class));// 输出falseSystem.out.println(Child.class.isAssignableFrom(Parent.class));}
}

四、instanceof测试

示例代码如下:

/*** @author qinxun* @date 2023-06-12* @Descripion: 父类*/
class Parent {
}/*** @author qinxun* @date 2023-06-12* @Descripion: 子类*/
class Child extends Parent{
}
/*** @author qinxun* @date 2023-06-12* @Descripion: instanceof测试*/
public class InstanceofDemo {public static void main(String[] args) {Parent parent = new Parent();Child child = new Child();// 输出trueSystem.out.println(child instanceof Parent);// 输出falseSystem.out.println(parent instanceof Child);}
}

总的来说Java中的isAssignableFrom和instanceof都是用于判断一个对象是否属于某个类或其子类的实例。具体来说,instanceof用于判断一个对象是否是某个类或其子类的实例,而isAssignableFrom则可以用于判断两个类之间是否存在继承关系。


http://www.ppmy.cn/news/340805.html

相关文章

CSS相关面试题

1、标准盒子模型和IE怪异盒子模型? 标准盒子模型就是指的元素的宽度和高度仅包括的内容区域,不包括边框和内边距,也就是说,元素的实际宽度和高度等于内容区域的宽度和高度IE怪异盒子是指元素的高度和宽度,包括内容区域…

Proxmox VE添加ISCSI存储

网上看了些教程发现很多添加ISCSI存储的,但是实际添加后都是可用看到空间大小确无法使用,要么就是一堆命令行的,没有图形化的完整教程,创建或者克隆虚机的时候可用空间是0.通过自己研究这里记录下来。 1、添加ISCSI 这里要先填写…

修改vim配置文件1

打开虚拟机终端,输入 vim ~/.vimrc ,以进入vim配置文件进行修改

vim中 E212:无法打开并写入文件

vim中 E212:无法打开并写入文件 vmware输入查看ip addr查看ip地址,没显示ip,通过 sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33 查看ens33网卡的配置,命令前需要加sudo,不然会因为权限不够报错,vi…

【常用vimrc配置 请自取】

"vim基 本 配 置 set fileencodingsutf-8,gb2312 "编 辑 和 …

E138: 无法写入 viminfo 文件 /root/.viminfo!

:q退出时 检查一下磁盘空间 检查一下inode for i in /var/spool/*; do echo $i; find $i |wc -l; done 发现几乎全部被/var/spool/clientmqueue目录占用完了 直接将/var/spool/clientmqueue目录下的文件清理掉即可 清理后 然后再看问题已经解决了 linux操作系统中的/var/sp…

gvim【三】【_vimrc配置】

GVIM可以通过修改vimrc来灵活配置你的编辑器。 这里先给出我的vimrc: "设置背景主题 "colo Candyset nocompatible" Vim with all enhancements source $VIMRUNTIME/vimrc_example.vim" Remap a few keys for Windows behavior source $VIMRUN…

vi 修改文件后保存文件时遇到的问题:E212: 无法打开并写入文件

使用vi编辑器写好内容后保存并退出时遇到以下问题 解决方案 该问题的原因是用户权限不够,因为普通用户用 vi 不能保存文件,需要使用超级用户才可以。 先转换为超级用户:su 再用vi打开文件进行保存:vi…:wq 参考链接 linux操作提示…