class Base{ public void draw(){ System.out.println("Base"); } } class Driver extends Base{ public void draw(){ System.out.println("Driver"); } } public class TestClass { public static void test(Object x){ System.out.println(x.getClass()); System.out.println("x instanceof Base " + (x instanceof Base)); System.out.println("x instanceof Driver " + (x instanceof Driver)); System.out.println("Base.class.isInstance(x) " + Base.class.isInstance(x)); System.out.println("Driver.class.isInstance(x) " + Driver.class.isInstance(x)); System.out.println("x.getClass() == Base.class " + (x.getClass() == Base.class)); System.out.println("x.getClass() == Driver.class " + (x.getClass() == Driver.class)); System.out.println("x.getClass().equals(Base.class)) " + (x.getClass().equals(Base.class))); System.out.println("x.getClass().equals(Driver.class)) " + (x.getClass().equals(Driver.class))); //instanceof 与 isInstance的结果是一样的。 } public static void main(String[] args) { try { //创建该类的Class对象 Class cls = Driver.class; Class cls1 = Class.forName("Driver"); ((Driver)cls.newInstance()).draw(); ((Driver)cls1.newInstance()).draw(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } test(new Base()); System.out.println("---------------------------------------------------"); test(new Driver()); } }