zoukankan      html  css  js  c++  java
  • java反射小样例

    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 block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		
    	}
    }

    结果为:

    有配置文件!
    eat Apple

  • 相关阅读:
    几个可以用到的正则表达式
    apache fileupload 文件上传,及文件进度设置获取
    Log4j日志根据配置输出到多个自定义文件
    spring3.2.2 remoting HTTP invoker 实现方式
    希望自己坚持住!
    tomcat线程一直处于RUNNABLE,不接受请求
    OM—>AR相关会计科目
    css画图
    Jquery 实现原理之 Ajax
    HTML、XHTML和HTML5区别与联系
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4022136.html
Copyright © 2011-2022 走看看