Javac旗帜禁止原始类型?

有没有可以传递的Java编译器标志告诉编译器不允许使用原始类型? 也就是说,对于任何generics类,让编译器强制使用参数化版本,否则抛出编译错误?

JDK7(b38)介绍了-Xlint:rawtypes 。 如上所述, -Xlint:unchecked警告未经检查的转换。

javac团队的Maurizio Cimadamore写了一篇关于它的博客文章。

您可以将Eclipse中原始类型的使用配置为警告或错误。

它位于Preferences / Java / Compiler / Errors and Warnings / Generic types /原型类型的使用下。

据我所知, javac没有这样的东西 – 即使是-Xlint:all你都没有得到类似的警告:

 ArrayList x = new ArrayList(); 

你可以通过以下方式来警告你:

-Xlint:未选中

这将在一些(但不是全部)缺少generics的情况下产生警告。

 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 } } 

根据警告,您可以返回并修复代码以将声明添加到声明中。

不理想,如果我没记错,它仍然不会捕捉到一切。