安全地将对象添加到无法设置的原始列表 (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导致的不可避免的泛型类型问题.
我正在使用 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导致的不可避免的泛型类型问题.