在java中这是哪种类型的异常:注意:Demo.java使用未检查的或不安全的操作。注意:使用-Xlint重新编译:未选中以获取详细信息

在java中这是哪种类型的异常:注意:Demo.java使用未检查的或不安全的操作。注意:使用-Xlint重新编译:未选中以获取详细信息,java,exception,compiler-errors,Java,Exception,Compiler Errors,Demo.java使用未经检查或不安全的操作。 注意:使用-Xlint重新编译:未选中以获取详细信息* 编译时出现此错误这不是错误,而是警告 类TreeSet是一个参数化类(TreeSet),但您将其声明为raw,这意味着您没有指定条目的类型 这意味着编译器无法推断类型,也无法检查输入的内容 声明参数化类的正确方法: 如果使用类型声明: import java.util.*; class Demo { public static void main(String args[])

Demo.java
使用未经检查或不安全的操作。 注意:使用-Xlint重新编译:未选中以获取详细信息*


编译时出现此错误

这不是错误,而是警告

TreeSet
是一个参数化类(
TreeSet
),但您将其声明为raw,这意味着您没有指定条目的类型

这意味着编译器无法推断类型,也无法检查输入的内容

声明参数化类的正确方法: 如果使用类型声明:

import java.util.*;

class Demo {

    public static void main(String args[])
    {
        TreeSet t= new TreeSet();
        t.add("A");
        t.add("B");
        t.add("z");
        t.add("Z");
        t.add("M");
        t.add("N");
        System.out.println(t);
    }
}

TreeSet=newtreeset()// 这不是一个错误,而是一个警告

TreeSet
是一个参数化类(
TreeSet
),但您将其声明为raw,这意味着您没有指定条目的类型

这意味着编译器无法推断类型,也无法检查输入的内容

声明参数化类的正确方法: 如果使用类型声明:

import java.util.*;

class Demo {

    public static void main(String args[])
    {
        TreeSet t= new TreeSet();
        t.add("A");
        t.add("B");
        t.add("z");
        t.add("Z");
        t.add("M");
        t.add("N");
        System.out.println(t);
    }
}

TreeSet=newtreeset()//这并不例外,这是一个警告,编译器正在抱怨TreeSet实例。始终指定类型,例如TreeSet=new TreeSet()。这并不例外,这是一个警告,编译器正在抱怨TreeSet实例。始终指定类型,例如TreeSet=new TreeSet()。还要注意,
t.remove(1)
将以任何方式编译。出于历史原因,
remove
Object
作为参数。这在Java中是一个很严重的陷阱。@geanakuch是的,但至少它只是返回一个表示false的布尔值,因为集合不包含整数。这确实是一个陷阱,但在这个例子中并没有太大的危害是的,我同意。这与这个例子并不完全相关,但我认为值得一提;-)还要注意,
t.remove(1)
将以任何方式编译。出于历史原因,
remove
Object
作为参数。这在Java中是一个很严重的陷阱。@geanakuch是的,但至少它只是返回一个表示false的布尔值,因为集合不包含整数。这确实是一个陷阱,但在这个例子中并没有太大的危害是的,我同意。这与这个例子并不完全相关,但我认为值得一提;-)
TreeSet t = new TreeSet(); //<-- the compiler cannot know what you will add
t.add("someString"); // <-- fine
t.add(1); // <-- fine... but is it really fine?