Ý nghĩa của mã thông báo <?>
trong mã này được sao chép từ www.JavaPractices.com là gì? Khi tôi thay thế nó bằng cách tìm kiếm thông thường hơn <T>
được sử dụng cho các loại chung, nó không biên dịch được. (Lỗi: T không thể được giải quyết thành một loại.) Tại sao?Ý nghĩa của mã thông báo <?> trong Java là gì?
// <?> 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;
}
Chỉnh sửa: Tất nhiên khi chúng tôi sử dụng các loại mã thông thường như <T>
, nó phải xuất hiện trong khai báo lớp. Ở đây không có <T>
hoặc <?>
trong tuyên bố lớp học nhưng nó vẫn biên dịch và chạy đúng cách.
nhìn vào câu trả lời thay đổi nội dung của tôi .. – ngesh
Kiểm tra mới chỉnh sửa – BOSS