¿Cuál es el significado del token <?>
en este código copiado de www.JavaPractices.com? Cuando lo reemplazo con el aspecto más convencional <T>
utilizado para los tipos genéricos, no se puede compilar. (Error: T no puede resolverse en un tipo). ¿Por qué?¿Cuál es el significado del token <?> en Java?
// <?> 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;
}
Editar: Por supuesto, cuando utilizamos fichas de tipo genérico como <T>
, tiene que aparecer en la declaración de clase. Aquí no hay <T>
ni <?>
en la declaración de la clase, pero aún se compila y se ejecuta correctamente.
vistazo a mi respuesta editado .. – ngesh
comprobar la nueva edición – BOSS