首先设计一个接口
比如:
这是一个汽车服务接口,有前进和转弯的功能
package qf.test.test03;
public interface CarService {
//前进
void run();
//转弯
void turn(String direction);
}
实现这个接口,
比如:
一个奥托类
package qf.test.test02;
import qf.test.test03.CarService;
/**
* 2020/8/12
* 12:11
*/
public class Aotuo implements CarService {
@Override
public void run() {
System.out.println("奥托起步了...");
}
@Override
public void turn(String direction) {
System.out.println("奥托准备向"+direction+"转");
}
}
一个奇瑞类
package qf.test.test02;
import qf.test.test03.CarService;
/**
* 2020/8/12
* 12:12
*/
public class QiRui implements CarService {
@Override
public void run() {
System.out.println("奇瑞起步了...");
}
@Override
public void turn(String direction) {
System.out.println("奇瑞准备向"+direction+"转");
}
}
创建一个文件(什么文件都可以,只要能读出来)
里面写出包名.类名
qf.test.test02.Aotuo
qf.test.test02.QiRui
测试类:
package qf.test.test03;
import java.io.BufferedReader;
import java.io.FileReader;
/**
* 2020/8/12
* 12:14
*/
public class TestCar {
public static void main(String[] args) throws Exception {
//读文件
BufferedReader bufferedReader = new BufferedReader(new FileReader("src\\qf\\test\\test02\\shuoming.txt"));
String str=null;
while((str=bufferedReader.readLine())!=null){
//创建类对象
Class<?> aClass = Class.forName(str);
//实例化对象
CarService carService =(CarService) aClass.newInstance();
//调用方法
carService.run();
carService.turn("左");
}
bufferedReader.close();
}
}
在不知道实现类到底是什么的时候,可以用这种方法。比如公司只知道功能,却不知如何实现,这就可以交给外包公司去实现具体的功能。而公司只需要利用反射,不用知道外包公司是如何实现的,就可以直接使用。