Java中每个类都都可以通过Class.for("")获取,然后就可以根据需要创建对应的类对象或者类的父类对象等等。
Java反射机制代码示例如下:
class Candy {
static {System.out.println("Loading candy");}
}
class Gumm {
static {System.out.println("Loading gumm");}
public String toString() {
return "Gumm information";
}
}
class Gum extends Gumm {
static {System.out.println("Loading gum");}
public String toString() {
return "Gum information";
}
}
class Cookie {
static {System.out.println("Loading cookie");}
}
public class SweetShop {
public static void main(String[] args) throws InstantiationException, IllegalAccessException {
System.out.println("Inside main");
new Candy();
System.out.println("After creating candy");
try {
Class<?> cc = Class.forName("regex.Gum");
System.out.println(cc.getName());
System.out.println(cc.getCanonicalName());
System.out.println(cc.toString());
Gum g = (Gum) cc.newInstance();
System.out.println(g.toString());
Class<?> superclass = cc.getSuperclass();
System.out.println(superclass.getName());
Object newInstance = superclass.newInstance();
System.out.println(newInstance.toString());
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("After creating gum");
new Cookie();
System.out.println("After creating cookie");
}
}