因为是Anonymous class的原因,所以无法对run()中的参数进行传值
关于 Class 的类型,有下面几个说法,比较容易混淆,它们不是并列的概念: Anonymous Class Inner Class Member Class Nested Class
而下面的 Class,并不是上面这些“特殊”的 Class 类型,而只是“普通”的 Class,唯一有点特别的是,它不是占据一个单独的 .java 文件,而是写在 MyServlet.java 文件里面,跟 MyServlet 并列。至于要把从 HTTP request 里面得到的参数传给它,就可以像下面这样做(以下内容都在 MyServlet.java 文件中):
public class MyServlet extends HttpServlet ... { void doPost(HttpServletRequest req, HttpServletResponse resp) ...{ …… Timer timer = new Timer(); timer.schedule(new Task( req.getParameter("id") ), date); …… }} class Task extends TimerTask ... { private String param; public Task(String param) ...{ this.param = param; } public void run() ...{ try ...{ doWhat(param); } catch (IOException e) ...{ System.err.println(e); } } ……}