在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?