安全地将对象添加到无法设置的原始列表 (Java AST)

Safely adding objects to a raw list that cannot be set (Java AST)

我正在使用 Java AST (JDT) 并且必须将 org.eclipse.jdt.core.dom.Type 个实例添加到原始列表(pre-Java 5 代码),它只包含元素输入 Type(API 保证)。我使用 TypeDeclaration.superInterfaceTypes() 访问列表 由于 class TypeDeclaration 的编写方式(超级接口类型没有 setter),我必须直接添加元素并且不能简单地创建一个 List<Type> 实例,复制元素,添加我的新元素,然后设置新列表。因此我得到了一个编译器警告。

这是我当前的代码:

@SuppressWarnings("unchecked")
private void changeSuperInterface(TypeDeclaration declaration) {
    // some code...
    Type newInterface = ast.newSimpleType(ast.newName(name));
    declaration.superInterfaceTypes().remove(oldInterface);
    declaration.superInterfaceTypes().add(newInterface); // Type safety warning here.
}

我可以使用比仅抑制警告更优雅的解决方案来解决这个问题吗?

在您的项目属性或工作区首选项中 Java (>) Compiler > Errors/Warnings,在 泛型类型检查忽略由于原始API导致的不可避免的泛型类型问题.