package org.dcl.demo; interface Fruit { public void eat(); } class Apple implements Fruit { @Override public void eat() { // TODO Auto-generated method stub System.out.println("*** 吃苹果."); } } class Orange implements Fruit { @Override public void eat() { // TODO Auto-generated method stub System.out.println("*** 吃橘子."); } } class Factory { public static Fruit getFruit(String className) { Fruit instance = null; try { Class<?> cls = Class.forName(className); instance = (Fruit)cls.newInstance(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return instance; } } public class APIDemo { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Fruit f1 = Factory.getFruit("org.dcl.demo.Apple"); f1.eat(); Fruit f2 = Factory.getFruit("org.dcl.demo.Orange"); f2.eat(); } } package org.dcl.demo; interface Fruit { } class Apple implements Fruit,Cloneable { } public class APIDemo { /** * @param args * @throws ClassNotFoundException */ public static void main(String[] args) throws ClassNotFoundException { // TODO Auto-generated method stub Class<?> cls = Class.forName("org.dcl.demo.Apple"); System.out.println(cls.getSuperclass().getName()); Class<?> it[] = cls.getInterfaces(); for(int i = 0; i < it.length; i++) { System.out.println(it[i].getName()); } } } package org.dcl.demo; import java.lang.reflect.Constructor; class Person { private String name; private int age; public Person(){} public Person(String name){ this.name = name; } public Person(String name, int age){ this.name = name; this.age = age; } @Override public String toString() { return "姓名: " + this.name + ",年龄: " + this.age; } } public class APIDemo { /** * @param args * @throws ClassNotFoundException */ public static void main(String[] args) throws ClassNotFoundException { Class<?> cls = Class.forName("org.dcl.demo.Person"); Constructor<?> cons[] = cls.getConstructors(); for(int i = 0; i < cons.length; i++) { System.out.println(cons[i]); } } } package org.dcl.demo; import java.lang.reflect.Constructor; class Person { private String name; private int age; public Person(String name, int age){ this.name = name; this.age = age; } @Override public String toString() { return "姓名: " + this.name + ",年龄: " + this.age; } } public class APIDemo { /** * @param args * @throws ClassNotFoundException * @throws NoSuchMethodException * @throws SecurityException */ public static void main(String[] args) { try { Class<?> cls = Class.forName("org.dcl.demo.Person"); Constructor<?> constructor = cls.getConstructor(String.class, int.class); Person person = (Person)constructor.newInstance("diao", 26); System.out.println(person); } catch (Exception e) { e.printStackTrace(); } } } 如果没有无参的构造方法的话,就要获得Constructor对象,然后Constructor对象中有newInstance方法,把值设置进去就可以了!