java反射实现 假设某个任务的处理流程有四部,分别是 (1)输入4个整数 (2)对四个数进行排序,根据参数决定排序的方式,1是升序,2是降序 (3)对这4个数,每个都加上一个指定的数字 (4)将处理后的数字输出 要求: (1)通过读配置文件实现以上流程 (2)可以通过修改配置文件从而修改流程,比如不需要第三步,或者将第二步和第三步交换 (3)配置文件用文本文件 input:1,2,3,4 add:10 sort:1 output
时间: 2023-06-17 15:05:20 浏览: 103
java反射···有兴趣的可以去下载··本人亲手敲打 注释清楚·
可以通过Java反射实现该任务处理流程,具体步骤如下:
1. 定义一个Task类,该类包含四个方法:input、sort、add、output,这四个方法分别对应该任务处理流程的四个步骤。
2. 通过读取配置文件,获取配置信息。可以将配置信息存储在一个Map中,key为步骤名称,value为步骤对应的参数值。
3. 根据配置信息,利用反射机制调用对应步骤的方法。
4. 修改配置文件可以通过更改相应的参数值来实现对流程的修改。
下面是示例代码:
```
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
public class Task {
public int[] input(String str) {
String[] arr = str.split(",");
int[] res = new int[arr.length];
for (int i = 0; i < arr.length; i++) {
res[i] = Integer.parseInt(arr[i]);
}
return res;
}
public int[] sort(int[] arr, int order) {
Arrays.sort(arr);
if (order == 2) {
for (int i = 0, j = arr.length - 1; i < j; i++, j--) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
return arr;
}
public int[] add(int[] arr, int num) {
for (int i = 0; i < arr.length; i++) {
arr[i] += num;
}
return arr;
}
public void output(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
public static void main(String[] args) throws Exception {
Map<String, String> configMap = new HashMap<String, String>();
configMap.put("input", "1,2,3,4");
configMap.put("add", "10");
configMap.put("sort", "1");
configMap.put("output", "");
Task task = new Task();
Class<?> clazz = task.getClass();
Method method = clazz.getMethod("input", String.class);
int[] arr = (int[]) method.invoke(task, configMap.get("input"));
method = clazz.getMethod("sort", int[].class, int.class);
arr = (int[]) method.invoke(task, arr, Integer.parseInt(configMap.get("sort")));
method = clazz.getMethod("add", int[].class, int.class);
arr = (int[]) method.invoke(task, arr, Integer.parseInt(configMap.get("add")));
method = clazz.getMethod("output", int[].class);
method.invoke(task, arr);
}
}
```
在上述示例代码中,我们首先定义了一个Task类,该类包含了任务处理流程的四个步骤:input、sort、add、output。其中,input方法用于将字符串转换为整数数组,sort方法用于对整数数组进行排序,add方法用于将整数数组中的每个元素加上指定的数字,output方法用于输出处理后的结果。
接着,我们通过读取配置文件获取到配置信息,并将配置信息存储在一个Map中。然后,利用反射机制获取Task类中对应步骤的方法,并调用该方法进行处理。
最后,我们可以通过修改配置文件中的参数值来实现对流程的修改。例如,我们可以将sort的参数值修改为2,这样就可以将排序方式改为降序排序。
阅读全文