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

  • 相关阅读:
    ACL-包过滤技术
    基于Openwrt虚拟路由MAC地址
    openwrt串口控制台+联网
    HSRP
    LeetCode37题解(yield生成器提高速度)
    递归+HashMap套路(可以对付可降解问题)
    python实现24点游戏(地球上最短的24点游戏代码?)
    怎么把pygame的过程录制到mp4
    python排列组合算法
    递归和迭代,以及汉诺塔,采用迭代法不容易实现的说明
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4022136.html
Copyright © 2011-2022 走看看