1
、创建一个
Car
汽车接口,里面提供一个
drive
方法
2
、创建三个汽车的实现类
3
、如何通过反射实现动态的切换不同的实现类【不修改源码】
创建Car接口:
package com.ja.homework5;
public interface Car {
void drive();
创建三个汽车的实现类:(Bus01,Bus02,Bus03)
package com.ja.homework5;
public class Bus01 implements Car{
@Override
public void drive() {
System.out.println("跑的慢");
}
}
package com.ja.homework5;
public class Bus02 implements Car{
@Override
public void drive() {
System.out.println("跑的一般");
}
}
package com.ja.homework5;
public class Bus03 implements Car{
@Override
public void drive() {
System.out.println("跑的快");
}
}
创建一个配置文件放在src目录下
Car=com.ja.homework5.Bus01
通过反射实现动态的切换不同的实现类【不修改源码】
package com.ja.homework5;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.reflect.Array;
import java.lang.reflect.Method;
import java.sql.Driver;
import java.util.Properties;
public class Test2 {
public static void main(String[] args) throws Exception {
//创建集合
Properties pr = new Properties();
FileInputStream in= new FileInputStream("src\\config");
//将键值对存储到集合中
pr.load(in);
System.out.println(pr);
in.close();
String className = pr.getProperty("Car");
//获取指定类的class文件对象
Class<?> class1 = Class.forName(className);
Car car = (Car) class1.newInstance();
car.drive();
通过修改配置文件去切换类
总结:
不通过修改代码去切换而是通过修改配置文件去切换,其实逻辑非常简单,一开始想复杂了,我写的过程中报错太多次了,老是漏点东西,导致花费比较长的时间,终归是敲少了。