//java 实现反射//首先定义一个接口Ishow.javapublic interface Ishow(){ void show(String str);}//建立一个demo.java文件实现接口public class demo implements Ishow{ public void show(String str){ Ssytem.out.println(str); }}//建立test.java文件来测试public class test{public static void main(String args[]){ String str ="p1.demo"; //包名+反射的类名 try(){ Class c1 =Class.forname(str); try(){ Ishow a =(Ishow)c1.newInstance(); // 类加载机制 a.show("qq"); }catch(InstantiationException e){ e.printStackTrace(); }catch(IllegalAccessException e){ e.printStackTrace(); }catch(ClassNotFoundException e){ e.printStackTrace(); } } }}//java实现动态配置 实现反射//Ishow 和demo 不变public interface Ishow(){ void show(String str);}public class demo implements Ishow{ public void show(String str){ Ssytem.out.println(str); }}建立PropertiesUtil.javaimport java.util.Properties;public class PropertiesUtil{ Properties p = new Properties(); //new 一个properties对象 try(){ p.load(PropertiesUtil.class.getResourceAsStream("show.properties"));加载show.properties }catch(IOException e){ e.printStackTrace(); } return p;}//建立 show.properties文件show=p1.demo//建立test.java文件来测试public class test{public static void main(String args[]){//此处的包+类名是通过动态文件show.properties来加载的 Properties p =Properties.getShowProperties(); String str = p.getProperty("show"); try(){ Class c1 =Class.forname(str); try(){ Ishow a =(Ishow)c1.newInstance(); // 类加载机制 a.show("qq"); }catch(InstantiationException e){ e.printStackTrace(); }catch(IllegalAccessException e){ e.printStackTrace(); }catch(ClassNotFoundException e){ e.printStackTrace(); } } }}