Javac旗帜禁止原始类型?

时间:2009-03-30 16:15:21

标签: java generics javac

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

3 个答案:

答案 0 :(得分:12)

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

javac团队的Maurizio Cimadamore写了一篇关于它的weblog entry

答案 1 :(得分:6)

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

它位于首选项/ Java /编译器/错误和警告/通用类型/原始类型的使用情况下。

就我所知,

javac没有这样的东西 - 即使-Xlint:all你没有得到类似的警告:

ArrayList x = new ArrayList();

答案 2 :(得分: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
    }
}

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

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