instanceof 和 isInstance 区别

instanceof 和 isInstance 区别其实二者的功能是一致的 isInstance 源码中有说明 Thismethodis codeinstance operator 对应的翻译 这个方法是 Java 语言 instanceof 操作符的动态等价物 下面具体介绍一下二者 1 instanceofin

其实二者的功能是一致的;isInstance 源码中有说明:

This method is the dynamic equivalent of the Java language {@code instanceof} operator。 对应的翻译: 这个方法是Java语言 instanceof 操作符的动态等价物。

下面具体介绍一下二者:

1、instanceof

instanceof 是 Java 中的一个操作符; 使用方法: obj instanceof class; 解释: 这个 obj 是不是 class 这种类型;

 

2、isInstance

 

isInstance 是 Class 类的一个方法; 使用方法: A.class.isInstance(obj); 解释: 这个对象 obj 能不能被强制转化为 A 这个类型;

 

3、下面看一下具体实例,实例上添加了一些说明:

class People { } class Male extends People { } public class Demo { public static void main(String[] args) { Male male = new Male(); People people = new People(); // 如果对象是某个类或其子类的一个实例,则这个对象属于这个类型 System.out.println(male instanceof People); // true System.out.println(male instanceof Male); // true // 父类对象不是子类这种类型 System.out.println(people instanceof Male); //false // null 不属于任何类型 System.out.println(null instanceof Male); //false System.out.println(null instanceof Object); //false // 所有类都属于 Object 类型 System.out.println(male instanceof Object); // true System.out.println(people instanceof Object); // true // 如果对象是某个类或其子类的一个实例,则这个对象能被转化为这个类型 System.out.println(People.class.isInstance(people)); // true System.out.println(People.class.isInstance(male)); // true // 父类对象不能转化为子类型 System.out.println(Male.class.isInstance(people)); //false // null 不能转化为其他类型 System.out.println(People.class.isInstance(null)); //false System.out.println(Object.class.isInstance(null)); //false // 非空对象都可以转化为 Object 类型 System.out.println(Object.class.isInstance(people)); // true System.out.println(Object.class.isInstance(male)); // true } }

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/223108.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午2:50
下一篇 2026年3月17日 下午2:50


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号