如果实际的问题是“为什么允许”,那么想象一下
final在现有类中添加关键字时的情况。我认为您不希望此更改破坏将此类用作通用范围的其他现有代码,因为它仍然完全合法。这就是为什么编译器在这种情况下不会发出错误的原因。
另一方面,如果您不小心将
finalclass用作泛型绑定,则希望得到通知,因为这样的构造没有意义。这就是编译器发出警告的原因。
实际上,用警告标记合法但毫无意义的结构是一种常见的做法。

如果实际的问题是“为什么允许”,那么想象一下
final在现有类中添加关键字时的情况。我认为您不希望此更改破坏将此类用作通用范围的其他现有代码,因为它仍然完全合法。这就是为什么编译器在这种情况下不会发出错误的原因。
另一方面,如果您不小心将
finalclass用作泛型绑定,则希望得到通知,因为这样的构造没有意义。这就是编译器发出警告的原因。
实际上,用警告标记合法但毫无意义的结构是一种常见的做法。