/** * 书本:《Thinking In Java》 * 功能:关于class对象引用的各种关于class的方法 * 文件:ToyTest.java * 时间:2015年4月12日19:21:32 * 作者:cutter_point */ package Lesson14TypeInformation.toys; import static net.mindview.util.Print.*; interface HasBatteries {} interface Waterproof {} interface Shoots {} class Toy { Toy() {} Toy(int i) {} } class FancyToy extends Toy implements HasBatteries, Waterproof, Shoots { FancyToy() { super(1); } } class A { public String aa = " wuwuwwu"; public A() {System.out.println("========================");} public A(String a) { this.aa = a; } public void get() { System.out.println("=====" + aa); } } public class ToyTest { static void printInfo(Class cc) { print("Class name: " + cc.getName() + " is interface? [" + cc.isInterface() +"]"); print("Simple name: " + cc.getSimpleName()); print("Canonical name : " + cc.getCanonicalName()); //经典名,就是全名包括包 } public static void main(String[] args) { Class c = null; try { c = Class.forName("Lesson14TypeInformation.toys.FancyToy"); } catch (ClassNotFoundException e) { print("Cant`t find FancyToy"); System.exit(1); } printInfo(c); for(Class face : c.getInterfaces()) { printInfo(face); //输出这个类型的每一个接口 } Class up = c.getSuperclass(); //得到父类 Object obj = null; try { obj = up.newInstance(); } catch (InstantiationException e) { print("Cannot instantiate"); System.exit(1); } catch (IllegalAccessException e) { print("Cannot access"); System.exit(1); } //实例化一个对象 printInfo(obj.getClass()); Class b = null; A a1 = new A("a111111111111111111111"); // A a2 = new A("a222222222222222222222"); Object a3 = null; A a4 = null; try { b = Class.forName("Lesson14TypeInformation.toys.A"); // Class th = b.getClass(); a4 = (A) b.newInstance(); //得到类的对象,但是没有实例化 // a4 = (A) a3; a4.get(); } catch (Exception e) { e.printStackTrace(); } } }
输出:
Class name: Lesson14TypeInformation.toys.FancyToy is interface? [false] obj1
Simple name: FancyToy obj1
Canonical name : Lesson14TypeInformation.toys.FancyToy obj1
Class name: Lesson14TypeInformation.toys.HasBatteries is interface? [true] obj1
Simple name: HasBatteries obj1
Canonical name : Lesson14TypeInformation.toys.HasBatteries obj1
Class name: Lesson14TypeInformation.toys.Waterproof is interface? [true] obj1
Simple name: Waterproof obj1
Canonical name : Lesson14TypeInformation.toys.Waterproof obj1
Class name: Lesson14TypeInformation.toys.Shoots is interface? [true] obj1
Simple name: Shoots obj1
Canonical name : Lesson14TypeInformation.toys.Shoots obj1
Class name: Lesson14TypeInformation.toys.Toy is interface? [false] obj1
Simple name: Toy obj1
Canonical name : Lesson14TypeInformation.toys.Toy obj1
========================
===== wuwuwwu