【发布时间】:2009-03-30 16:15:21
【问题描述】:
是否可以传递任何 Java 编译器标志来告诉编译器禁止使用原始类型?也就是说,对于任何泛型类,让编译器强制使用参数化版本,否则抛出编译错误?
【问题讨论】:
是否可以传递任何 Java 编译器标志来告诉编译器禁止使用原始类型?也就是说,对于任何泛型类,让编译器强制使用参数化版本,否则抛出编译错误?
【问题讨论】:
JDK7 (b38) 引入了-Xlint:rawtypes。如上所述,-Xlint:unchecked 会针对未经检查的转化发出警告。
javac 团队的 Maurizio Cimadamore 写了一封 weblog entry 关于它。
【讨论】:
您可以在 Eclipse 中将原始类型的使用配置为警告或错误。
它位于 Preferences / Java / Compiler / Errors and Warnings / Generic types / Usage of a raw type。
据我所知,javac 没有类似的内容 - 即使使用 -Xlint:all,您也不会收到类似以下内容的警告:
ArrayList x = new ArrayList();
【讨论】:
您可以通过以下方式获得警告:
-Xlint:未选中
这将在某些(但不是全部)缺少泛型的情况下产生警告。
import java.util.ArrayList;
import java.util.List;
public class Main
{
public static void main(final String[] argv)
{
List list = new ArrayList(); // no warning at all
list.add("Hello"); // warning will be on this line
}
}
鉴于警告,您可以返回并修复代码以将泛型添加到声明中。
不理想,如果我没记错的话,它仍然无法捕捉到所有内容。
【讨论】: