java中instanceof与Class的等价性代码示例
程序员文章站
2023-11-20 20:10:58
本文研究的主要是java中instanceof与class的等价性的相关问题,具体如下。
java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一...
本文研究的主要是java中instanceof与class的等价性的相关问题,具体如下。
java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
实例1(instanceof)
接口person
public interface person { public void eat(); }
实现类people
public class people implements person { private int a=0; @override public void eat() { system.out.println("======"+a); } }
子类xiaoming:
public class xiaoming extends people { private string name; @override public void eat() { system.out.println("+++++++++"); } }
主函数
public static void main(string[] args) { people p=new people(); xiaoming x=new xiaoming(); system.out.println(p instanceof person); system.out.println(p instanceof xiaoming); -----2 system.out.println(x instanceof person); system.out.println(x instanceof people); }
注意:上面2处的代码在编译时不会报错。
运行结果:
true false true true
实例2
package com.test.class_obj; class base { } class derived extends base { } public class familyvsexacttype { static void test(object x) { system.out.println("testing x of type " + x.getclass().getsimplename()); system.out.println("-----------------------------------------"); system.out.println("x instanceof base " + (x instanceof base)); system.out.println("x instanceof derived " + (x instanceof derived)); system.out.println("-----------------------------------------"); system.out.println("base.isinstance(x) " + base.class.isinstance(x)); system.out.println("derived.isinstance(x) " + derived.class.isinstance(x)); system.out.println("-----------------------------------------"); system.out.println("x.getclass() == base.class " + (x.getclass() == base.class)); system.out.println("x.getclass() == derived.class " + (x.getclass() == derived.class)); system.out.println("x.getclass().equals(base.class)) " + (x.getclass().equals(base.class))); system.out.println("x.getclass().equals(derived.class)) " + (x.getclass().equals(derived.class))); system.out.println("*****************************************"); system.out.println("*****************************************"); } public static void main(string[] args) { test(new base()); test(new derived()); } }
输出内容如下:
testing x of type base ----------------------------------------- x instanceof base true x instanceof derived false ----------------------------------------- base.isinstance(x) true derived.isinstance(x) false ----------------------------------------- x.getclass() == base.class true x.getclass() == derived.class false x.getclass().equals(base.class)) true x.getclass().equals(derived.class)) false ***************************************** ***************************************** testing x of type derived ----------------------------------------- x instanceof base true x instanceof derived true ----------------------------------------- base.isinstance(x) true derived.isinstance(x) true ----------------------------------------- x.getclass() == base.class false x.getclass() == derived.class true x.getclass().equals(base.class)) false x.getclass().equals(derived.class)) true ***************************************** ***************************************** process finished with exit code 0
通过以上测试可以得出以下结论:
- instanceof() 和 isinstance() 生成的结果相同
- equals() 和 == 生成的结果相同
- 父类可以是子类的实例,但子类不可以是父类的实例
- class 对象比较时,不考虑继承
总结
以上就是本文关于java中instanceof与class的等价性代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
推荐阅读
-
java中instanceof与Class的等价性代码示例
-
java中重载与重写的区别(含示例代码)
-
java中的class
和 class>区别示例代码详解 -
详解java中链表的定义与使用的示例代码
-
java中的class
和 class>区别示例代码详解 -
详解Java中的 ==, equals 与 hashCode的区别与联系的示例代码
-
java中Set与Map排序输出到Writer的示例代码分享
-
Java中replace与replaceAll之间的区别介绍(代码示例)
-
Java中finally与return的执行顺序解析(代码示例)
-
详解Java中的 ==, equals 与 hashCode的区别与联系的示例代码