它无法编译,因为您的类不是通用的(也不是您的任何方法)。在此特定示例中,小丑(?)表示ScheduledFuture可以由任何参数设置。
有时,如果您在内部使用另一个泛型类并且不知道将使用的确切类型,则使整个类成为泛型是没有意义的。在此示例中,您有三个选择:
- 使StopAlarmTask通用(在这种情况下没有意义)
- 在ScheduledFuture中使用具体类型,但是它只会是一种可能的结果类型,例如String或Integer
- 使用通配符(
< ? >
)-允许检索FutureResult(字符串,整数,自定义类)的结果。您还可以将可能的泛型类型的范围缩小为某些子类,例如ScheduledGeneric< ? extends MyObject >
或为超类:ScheduledGeneric< ? super MyObject >



