package com.cc.reflect;
import java.io.BufferedReader; import java.io.FileReader;
public class Demo05 {
public static void main(String[] args) throws Exception { /*Scanner sc = new Scanner(System.in); String str = sc.nextLine(); Class clazz = Class.forName("com.cc.reflect."+str); Fruit fruit =(Fruit)clazz.newInstance(); fruit.flow();*/ JuiceMachine jm = new JuiceMachine(); //准备一个流对象,读取配置文件中的配置信息 BufferedReader br = new BufferedReader(new FileReader("fruit.txt")); //读取文件中的类名 String className = br.readLine(); 使用反射的方式,获取类名对应的字节码对象(全路径名) Class c = Class.forName("com.cc.reflect."+className); //创建c字节码对象描述的,真正的水果对象 Object obj = c.newInstance(); //使用榨汁机,榨水果,先把对象转成水果类型 Fruit f = (Fruit)obj; jm.juice(f); }
} class JuiceMachine{ public void juice(Fruit f) { f.flow(); } } interface Fruit{ void flow(); }
class Apple implements Fruit{
@Override public void flow() { System.out.println("苹果汁"); }
} class Orange implements Fruit{
@Override public void flow() { System.out.println("橙汁"); }
} |