我是java新手,ROOKIE ...... 我正在做arraylist示例,我在IDE上编译它完美的工作, 我在CMD上做了那个例子它给了我一个错误
注意:Practice.java使用未经检查或不安全的操作。
注意:使用-Xlint重新编译:取消选中以获取详细信息。
所以我使用谷歌搜索功能并搜索了所有内容,我找到了答案,
顺便说一下这就是我正在谈论的代码......
import java.util.*;
public class Practice{
public static void main(String[] args){
ArrayList mylist = new ArrayList();
mylist.add("Maisam Bokhari");
mylist.add("Fawwad Ahmed");
mylist.add("Ali Asim");
mylist.add("Maheen Hanif");
mylist.add("Rimsha Imtiaz");
mylist.add("Mugheer Mughal");
mylist.add("Maaz Hussain");
mylist.add("Asad Shahzada");
mylist.add("Junaid Khan");
System.out.println("Name of the student: "+mylist);
}
}
它在IDE(netbeans)上完美运行,但它在cmd上给出了这两个错误
互联网上的许多人和stackoverflow表示在创建ArrayList对象时定义数据类型
的ArrayList<字符串> mylist = new ArrayList<>();
我这样做了,它在CMD上也很完美......:)
现在我的问题是我无法在互联网上找到
IDE编译和命令行工具编译有什么区别?
(我记得当我习惯在turboC中编译我的 C 代码时,当我转移到代码:: blocks时我必须更改一些代码来调整编译器,这是同样的事情吗?但是java是平台独立的)
答案 0 :(得分:2)
区别的一个原因是您的IDE可能使用的是与命令行编译器不同的java版本。如果您的Netbeans IDE使用的是Java 1.4或更早版本,并且命令行使用1.5或更新版本,您会看到这一点。
答案 1 :(得分:2)
您的IDE会报告相同的内容,具体取决于编译器版本。在我的记忆中,Java 1.4不会报告这个问题,但1.5和更新的版本会因为你违背了泛型的事实。
如果操作正确,则在命令行上完成的编译与IDE完成的编译之间存在 no 差异。但这意味着您必须确保使用相同版本的Java来编译两者中的代码。
答案 2 :(得分:1)
这是一个有趣的问题,我已经在Eclipse IDE中尝试过你的代码,因为Eclipse会报告一个警告:
Type safety: The method add(Object) belongs to the raw type List. References to generic type List<E> should be parameterized
这就是您的以下操作不安全的原因。请参阅此示例,如果未指定列表的数据类型,则可以在列表中添加任何类型的数据
List a = new ArrayList();
a.add("abc"); //add a string object
a.add('a'); //add a char
a.add(1); // add a integer
因此,当您在列表中操作元素时,它将是不安全的。这对你有意义吗?