java反射小例子

来源:互联网 发布:淘宝q币充错了 编辑:程序博客网 时间:2024/05/21 10:13
package reflect;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.util.Properties;interface fruit{public abstract void eat() ;}class Apple implements fruit{public void eat() {System.out.println("eat Apple");}}class orange implements fruit{public void eat() {System.out.println("eat orange");}}class init{public static Properties getPro() throws FileNotFoundException, IOException{Properties pro = new Properties() ;File f = new File("fruit.properties") ;if(f.exists()){System.out.println("有配置文件!");//从配置文件中读取键值对pro.load(new FileInputStream(f)) ;}else{System.out.println("没有配置文件!");pro.setProperty("apple", "reflect.Apple") ;pro.setProperty("orange", "reflect.orange") ;pro.store(new FileOutputStream(f), "FRUIT CLASS") ;}return pro ;}}class Factory{public static fruit getInstance(String className){fruit f = null ;try {//通过反射得到fruit的实例对象f = (fruit)Class.forName(className).newInstance() ;} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();}return f ;}}public class Hello {public static void main(String[] args) {try {Properties pro = init.getPro() ;fruit f = Factory.getInstance(pro.getProperty("apple")) ;if(f != null){f.eat() ;}} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

结果为:

有配置文件!
eat Apple

0 0