Невозможно изменить подпись метода run()
.
Однако вы можете создать подкласс TimerTask и дать ему какой-то метод initialize.Затем вы можете вызвать новый метод с нужными аргументами, сохранить их как поля в своем подклассе и затем ссылаться на эти инициализированные поля в run()
-методе:
abstract class MyTimerTask extends TimerTask
{
protected String myArg = null;
public void init(String arg)
{
myArg = arg;
}
}
...
MyTimerTask timert = new MyTimerTask()
{
@Override
public void run()
{
//do something
System.out.println(myArg);
}
}
...
timert.init("Hello World!");
new Thread(timert).start();
Убедитесь, что поля установленывидимости для protected
, поскольку поля private
не видны (анонимным) подклассам MyTimerTask
.И не забудьте проверить, инициализированы ли ваши поля в методе run()
.