CodeQL 文档

类型变量隐藏了另一个类型

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

点击查看 CodeQL 仓库中的查询

如果两种类型具有相同的名称,但其中一种类型在另一种类型的范围内定义,则会发生类型隐藏。如果你引入了与导入的类同名的类型变量,则可能会出现这种情况。

类型隐藏可能会导致两种类型被混淆,从而导致各种问题。

建议

为类型变量命名,使其名称不会与导入的类冲突。

示例

在以下示例中,类型 java.util.Map.Entry 在文件顶部导入,但类 Mapping 使用两个类型变量定义,KeyEntry。在 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

参考

  • ©GitHub, Inc.
  • 条款
  • 隐私