java反射简单实例
本文实例讲述了java反射简单实现方法。分享给大家供大家参考。具体实现方法如下:
packagereflect;
importjava.io.File; importjava.io.FileInputStream; importjava.io.FileNotFoundException; importjava.io.FileOutputStream; importjava.io.IOException; importjava.util.Properties;
interfacefruit{ publicabstractvoideat(); } classAppleimplementsfruit{
publicvoideat(){ System.out.println("eatApple"); } } classorangeimplementsfruit{
publicvoideat(){ System.out.println("eatorange"); } } classinit{ publicstaticPropertiesgetPro()throwsFileNotFoundException,IOException{ Propertiespro=newProperties(); Filef=newFile("fruit.properties"); if(f.exists()){ System.out.println("有配置文件!"); //从配置文件中读取键值对 pro.load(newFileInputStream(f)); }else{ System.out.println("没有配置文件!"); pro.setProperty("apple","reflect.Apple"); pro.setProperty("orange","reflect.orange"); pro.store(newFileOutputStream(f),"FRUITCLASS"); } returnpro; } } classFactory{ publicstaticfruitgetInstance(StringclassName){ fruitf=null; try{ //通过反射得到fruit的实例对象 f=(fruit)Class.forName(className).newInstance(); }catch(InstantiationExceptione){ e.printStackTrace(); }catch(IllegalAccessExceptione){ e.printStackTrace(); }catch(ClassNotFoundExceptione){ e.printStackTrace(); } returnf; } } publicclassHello{ publicstaticvoidmain(String[]args){ try{ Propertiespro=init.getPro(); fruitf=Factory.getInstance(pro.getProperty("apple")); if(f!=null){ f.eat(); } }catch(FileNotFoundExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } }