首页 > 代码库 > java-----instanceof与getClass的区别
java-----instanceof与getClass的区别
在比较一个类是否和另一个类属于同一个类实例的时候,我们通常可以采用instanceof和getClass两种方法通过两者是否相等来判断,但是两者在判断上面是有差别的,下面从代码中看看区别:
[java] view plain copy
- public class Test
- {
- public static void testInstanceof(Object x)
- {
- System.out.println("x instanceof Parent: "+(x instanceof Parent));
- System.out.println("x instanceof Child: "+(x instanceof Child));
- System.out.println("x getClass Parent: "+(x.getClass() == Parent.class));
- System.out.println("x getClass Child: "+(x.getClass() == Child.class));
- }
- public static void main(String[] args) {
- testInstanceof(new Parent());
- System.out.println("---------------------------");
- testInstanceof(new Child());
- }
- }
- class Parent {
- }
- class Child extends Parent {
- }
- /*
- 输出:
- x instanceof Parent: true
- x instanceof Child: false
- x getClass Parent: true
- x getClass Child: false
- ---------------------------
- x instanceof Parent: true
- x instanceof Child: true
- x getClass Parent: false
- x getClass Child: true
- */
从程序输出可以看出,instanceof进行类型检查规则是:你属于该类吗?或者你属于该类的派生类吗?而通过getClass获得类型信息采用==来进行检查是否相等的操作是严格的判断。不会存在继承方面的考虑;
java-----instanceof与getClass的区别
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。