类型变量隐藏了另一个类型¶
ID: java/type-variable-hides-type
Kind: problem
Security severity:
Severity: warning
Precision: medium
Tags:
- reliability
- readability
- types
Query suites:
- java-security-and-quality.qls
如果两种类型具有相同的名称,但其中一种类型在另一种类型的范围内定义,则会发生类型隐藏。如果你引入了与导入的类同名的类型变量,则可能会出现这种情况。
类型隐藏可能会导致两种类型被混淆,从而导致各种问题。
建议¶
为类型变量命名,使其名称不会与导入的类冲突。
示例¶
在以下示例中,类型 java.util.Map.Entry
在文件顶部导入,但类 Mapping
使用两个类型变量定义,Key
和 Entry
。在 Mapping
类中使用 Entry
会引用类型变量,而不是导入的接口。因此,类型变量会隐藏 Map.Entry
。
import java.util.Map;
import java.util.Map.Entry;
class Mapping<Key, Entry> // The type variable 'Entry' shadows the imported interface 'Entry'.
{
// ...
}
要修复代码,应重命名第 4 行上的类型变量 Entry
。
参考¶
帮助 - Eclipse 平台:Java 编译器错误/警告首选项.
Java 语言规范:6.4 隐藏和遮蔽.