shi*_*i93 1 java compiler-construction warnings linked-list list
我正在尝试编写一个简单的代码,使用java.util.LinkedList库在Java中实现Linked List.我尽力保持它没有错误.
它使用-Xlint编译(并执行):unchecked.但它产生了很多类型的警告--LL.java:25:警告:[未经检查]未经检查的调用添加(E)作为原始类型的成员LinkedList
有人可以帮助我1.理解为什么会这样?2.删除警告!
任何帮助将不胜感激...
import java.util.LinkedList;
class LL{
public static void main(String[] args){
//creating a new linked list object
LinkedList LLobj = new LinkedList();
//adding data to linked list
LLobj.add("T");
LLobj.add("H");
LLobj.add("I");
LLobj.add("S");
LLobj.add(" ");
LLobj.add("I");
LLobj.add("S");
LLobj.add(" ");
LLobj.add("A");
LLobj.add(" ");
LLobj.add("L");
LLobj.add("I");
LLobj.add("N");
LLobj.add("K");
LLobj.add("E");
LLobj.add("D");
LLobj.add("-");
LLobj.add("L");
LLobj.add("I");
LLobj.add("S");
LLobj.add("T");
//printing the linked list
System.out.println(LLobj);
//Implementing more functions to add data
LLobj.addFirst("#");
LLobj.addLast("#");
LLobj.add(5,"$");
//printing the linked list
System.out.println(LLobj);
//removing data
LLobj.remove("$");
LLobj.remove("#");
LLobj.remove("#");
//printing the linked list
System.out.println(LLobj);
}
}
Run Code Online (Sandbox Code Playgroud)
好吧,你使用的是泛型类型(LinkedList<E>),但是你将它用作原始类型,就像你不了解泛型一样.你想要这样的东西:
LinkedList<String> list = new LinkedList<String>();
list.add("T");
list.add("H");
Run Code Online (Sandbox Code Playgroud)
这样你在涉及的类型方面是安全的,并且你知道列表中的所有内容都是字符串.
在Java 7中,您可以使用"菱形语法"从左侧推断右侧的类型:
LinkedList<String> list = new LinkedList<>();
Run Code Online (Sandbox Code Playgroud)
对于很多更多的仿制药(包括原料类型),请参阅Java泛型常见问题解答.另请注意,在我的示例中,我将您的LLobj变量名称(不遵循Java命名约定)重命名为just list.始终遵循命名约定是个好主意,尤其是在与其他人共享代码时.