Что означает токен В Java?

Что означает токен в этом коде, скопированном с www.JavaPractices.com? Когда я заменяю его на более традиционный , используемый для универсальных типов, он не компилируется. (Ошибка: T не может быть преобразован в тип.) Почему?

// <?> occurs 3 times in the entire program.  When it is replaced with <T> the
// program no longer compiles.

void activateAlarmThenStop()
{
    Runnable myPeriodicTask = new PeriodicTask();
    ScheduledFuture<?> soundAlarmFuture = 
        this.executorService.scheduleWithFixedDelay(myPeriodicTask, 
                                          startT, 
                                          period, 
                                          TimeUnit.SECONDS
                                         );
    Runnable stopAlarm = new StopAlarmTask(soundAlarmFuture);
    this.executorService.schedule(stopAlarm, stopT, TimeUnit.SECONDS);
}

private final class StopAlarmTask implements Runnable 
{
    StopAlarmTask(ScheduledFuture<?> aSchedFuture)
    {
        fSchedFuture = aSchedFuture;
    }

    public void run() 
    {
        CConsole.pw.println("Stopping alarm.");
        fSchedFuture.cancel(doNotInterruptIfRunningFlag);

        executorService.shutdown();
    }
    private ScheduledFuture<?> fSchedFuture;
}

Изменить: Конечно, когда мы используем токены универсального типа, такие как , они должны появиться в объявлении класса. Здесь нет ни , ни в объявлении класса, но он по-прежнему компилируется и работает правильно.

7
задан H2ONaCl 4 August 2011 в 09:17
поделиться