简单原理来介绍java编程之反射

直接上代码,比较简单大家都应该能看懂:

package com.blueZhang.reflect;
/**
 * 创建USB接口
 * 鼠标键盘等都属于USB设备
 * */
public interface usb {
	//打开USB
	public void open();
	//关闭USB
	public void close();

}
/**
 * 
 */
package com.blueZhang.reflect;

/**
 * @author blueZhang
 *
 */
public class MousUSB implements usb{

	@Override
	public void open() {
		// 
		System.out.println("mouse open!");
	}

	@Override
	public void close() {
		// 
		System.out.println("mous close!");
	}
	
	

}

package com.blueZhang.reflect;
/**
 * @author blueZhang
 * 实现usb接口的类
 * */
public class KeyUSB implements usb{

	@Override
	public void open() {
		// 
		System.out.println("key open!");
		
	}

	@Override
	public void close() {
		// 
		System.out.println("key close!");
		
	}
	

}

/**
 * 
 */
package com.blueZhang.reflect;

/**
 * @author blueZhang
 *
 */
public class NotPead {
	//电脑运行
	public void run()
	{
		System.out.println("电脑运行");
	}
	//电脑使用USB
	public void use(usb usb)
	{
		if(usb!=null)
		{
			usb.open();
			//
			usb.close();
			//
			
		}
	}
	

}

/**
 * 
 */
package com.blueZhang.reflect;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Properties;

/**
 * @author Administrator
 * 
 */
public class Test {

	/**
	 * @param args
	 *            笔记本可以运行 笔记本可以使用鼠标 笔记本可以使用键盘
	 * @throws FileNotFoundException 
	 * @throws ClassNotFoundException 
	 * @throws IllegalAccessException 
	 * @throws InstantiationException 
	 * 
	 */
	public static void main(String[] args) throws FileNotFoundException, ClassNotFoundException, InstantiationException, IllegalAccessException {
		//
		NotPead not = new NotPead();
		// 调用自己的run方法
		not.run();
		//
		/*
		 * 按照我们的使用习惯那就是 先创建两个对象然后调用相应的方法
		 * 
		 * 
		 * KeyUSB keyUSB = new KeyUSB(); noteBook.use(keyUSB);
		 * 
		 * MouseUSB mouseUSB = new MouseUSB(); noteBook.use(mouseUSB);
		 * 
		 * 但是我们发现如果总是有新的设备那么总是需要新去创建一个新的对象
		 * 
		 * 然后调用这里面的方法这样使我们程序的可扩展性变得更加不好
		 * 
		 * 所以使用反射机制如果有新的设备加入那么只需要更改我们的配置文件不必改变我们的
		 * 
		 * Test代码。这样提高了我们的代码的可扩展性
		 */
		//创建Properties对象
		Properties properties = new Properties();
		//创建输入流
		FileInputStream fis = new FileInputStream("config\\config.properties");
		//导入inputstream
		for(int i= 0;i<properties.size();i++)
		{
			String value = properties.getProperty("usb"+i);
			//
			Class<?> claz = Class.forName(value);
			//
			Object obj = claz.newInstance();
			//
			usb usb = (usb)obj;
			//
			usb.open();
			//
			usb.close();
			
					
			//
			
		}
		
	}

}

在自己的工程中创建配置文件config.properties 里面存储的是键值对前面是对像后面是对应的包名类名


配置文件:

usb1=com.blueZhang.reflect.KeyUSB

usb2=com.blueZhang.reflectMousUSB

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值