java反射机制小练习

外部程序吧字节码文件的名称保存在配置文件中,主函数从配置文件读取,进而运行外部程序。

接口:

package cn.itcast.reflecttest.demo;
//接口
public interface Pic {
	public void open();
	public void close();
}

主板:

package cn.itcast.reflecttest.demo;
//主板
public class MainBord {
	
	
	public MainBord() {
		super();
		System.out.println("MainBord run....");	
	}

	public void show(Pic pic) {
		pic.open();
		pic.close();
	}
	
}

内部程序:

package cn.itcast.reflecttest.demo;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class ReflectTest {

	public static void main(String[] args) throws IOException, Exception {
		//创建面板对象
		MainBord mb=new MainBord();
		//创建配置文件对象
		File configfile=new File("pic.properties");
		//创建集合
		Properties pr=new Properties();
		//读取配置文件
		FileInputStream in=new FileInputStream(configfile);
		//将配置文件加载到集合中
		pr.load(in);
		
		for(int i=0;i<pr.size();i++) {
			//获取字节码文件的名称
			String string=pr.getProperty("coonc"+(i+1));
			//创建字节码文件对象
			Class cc=Class.forName(string);
			//创建外设对象
			Pic pic=(Pic)cc.newInstance();
			//运行
			mb.show(pic);	
		}
		
		
	}

}

外部程序1:

package cn.itcast.reflecttest.demo;
//外部程序
public class Sound implements Pic {

	@Override
	public void open() {
		System.out.println("sound run....");
	}

	@Override
	public void close() {
		System.out.println("sound run...");
	}

}

外部程序2:

package cn.itcast.reflecttest.demo;

public class Keybord implements Pic {

	@Override
	public void open() {
		System.out.println("keybord open....");
	}

	@Override
	public void close() {
		System.out.println("keybord close....");
	}

}

配置文件:pic.properties

coonc1=cn.itcast.reflecttest.demo.Sound
coonc2=cn.itcast.reflecttest.demo.Keybord

猜你喜欢

转载自blog.csdn.net/TDOA1024/article/details/82927251