java - 为什么允许 `T extends String`但给出警告?

标签 java generics

<分区>

Possible Duplicate:
@SuppressWarnings for “extends String”

为什么 T extends String 被允许但给出警告?

The type parameter T should not be bounded by the final type String. Final types cannot be further extended

public class Car<T extends String> 

我知道什么是 final 我知道它是有效的,因为 T 的唯一可能值可以是 String 我想知道警告。

最佳答案

如果实际问题是“为什么它被允许”,那么想象一下将 final 关键字添加到现有类的情况。我认为您不希望此更改破坏其他使用此类作为通用绑定(bind)的现有代码,因为它仍然是完全合法的。这就是编译器在这种情况下不会发出错误的原因。

从另一方面来说,如果您不小心将 final 类用作通用绑定(bind),您希望得到通知,因为这样的构造没有意义。这就是编译器发出警告的原因。

实际上,用警告标记合法但无意义的构造是一种常见的做法。

关于java - 为什么允许 `T extends String`但给出警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12475050/

相关文章:

java - 我在哪里可以找到 openejb.xml 的完整引用资料?

java - Jsp、servlet后退按钮问题

java - 执行 io 时 akka jvm 线程与 os 线程

c# - 如何在运行时读取类的属性?

TList<T> 中的 Delphi XE8 错误,需要解决方法

c# - 不使用反射返回 IEnumerable<T> 的通用扩展方法

java - 在 JOptionPane 创建的其他方法中访问字符串?

java - 如何从传统 JSP 自定义标记调用 JSP 2.0 *.tag 文件?

generics - 抽象泛型类采用本身从该类派生的类型参数

c# - 将 List<IInfrastructureEntity> 转换为 List<TEntity>,其中泛型类型 TEntity 必须实现该接口(interface)