在比较一个类是否和另一个类属于同一个类实例的时候,我们通常可以采用instanceof和getClass两种方法通过两者是否相等来判断,但是两者在判断上面是有差别的,下面从代码中看看区别:
- 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
- */