import java.lang.reflect.Method;
import java.util.Date;
import java.util.TimerTask;
/**
* @author lth
* 定时任务共用方法
*/
public class TaskDemo extends TimerTask{
private String taskName;
private Object target;
private Method method;
private Object[] paramValues;
/**
* 构造方法
* @param taskName 任务名称
*/
public TaskDemo(String taskName, Object target){
this.taskName = taskName;
this.target = target;
}
/**
* 创建Method实例
* @param methodName 目标对象方法
* @param paramTypes 目标对象方法参数类型数组
* @return
* @throws NoSuchMethodException
* @throws SecurityException
*/
public TaskDemo setMethod(String methodName, Class<?>[] paramTypes) throws NoSuchMethodException, SecurityException{
Class<?> clazz = target.getClass();
method = clazz.getMethod(methodName, paramTypes);
return this;
}
/**
* 给反射调用的方法传参
* @param paramValues
* @return
*/
public TaskDemo setParamValues(Object[] paramValues){
this.paramValues = paramValues;
return this;
}
@Override
public void run(){
System.out.println(new Date()+taskName+":开始执行!!");
try{
Object result = method .invoke(target, paramValues);
if(result!=null)
System.out.println("返回结果:"+result.toString());
System.out.println(new Date()+taskName+":执行完毕!");
}
catch(Exception e){
System.out.println(new Date()+taskName+":执行失败!");
e.printStackTrace();
}
}
}