程序使用未经检查或不安全的操作,使用-Xlint重新编译:取消选中以获取详细信息

时间:2015-07-09 07:13:26

标签: java

我只是尝试一个简单的代码并获得此注释。程序已经成功编译和执行,但是这个说明让我感到不安。

Program uses unchecked or unsafe operations, recompile using -Xlint:unchecked for details
  • 这里有什么不安全或未经检查的操作?什么是不安全或未经检查的操作?
  • -Xlint:Unchecked做什么?以及如何使用它?

我在编译时使用了这个:

 javac <filename>.java -Xlint:unchecked

,结果是

[unchecked] unchecked call to add <E> as a member of raw type HashSet h.add("raj");

并在其他方面得到了它的意思是什么?

import java.util.HashSet;
import java.util.Iterator;
public class HashSetDemo
{
    public static void main(String[] args)
    {
        HashSet h = new HashSet();
        h.add("raj");
        h.add(11);
        h.add(22.2);
        h.add('c');
        h.add(true);
        h.add(null);
        h.add(null);
        System.out.println("Duplicate:"+h.add(11));
        System.out.println(h);
        Iterator itr = h.iterator();
        while(itr.hasNext())
        {
            System.out.println(itr.next());
        }
    }
}

1 个答案:

答案 0 :(得分:1)

您应该使用HashSet的类型:

Set<String> strings = new HashSet<>();

但是你只能将String个实例放在其中。

在您的示例中,您尝试将StringIntegerFloatBoolean个实例添加到其中,这是没有意义的。

查看the Java Tutorial了解泛型。