10

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

4

3 回答 3

12

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

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

于 2009-03-30T16:34:18.617 回答
7

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

它位于 Preferences / Java / Compiler / Errors and Warnings / Generic types / Usage of a raw type。

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

ArrayList x = new ArrayList();
于 2009-03-30T16:16:44.837 回答
5

您可以通过以下方式警告您:

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

给出警告后,您可以返回并修复代码以将泛型添加到声明中。

不理想,如果我没记错的话,它仍然无法捕捉到所有内容。

于 2009-03-30T16:21:27.010 回答