命令行工具编译和IDE编译Java之间的区别

时间:2014-11-18 00:17:36

标签: java netbeans arraylist cmd command-line-tool

我是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是平台独立的)

3 个答案:

答案 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

因此,当您在列表中操作元素时,它将是不安全的。这对你有意义吗?