Разница между компиляцией инструмента командной строки и компиляцией IDE Java

Я новичок в Java, ROOKIE... я делал пример arraylist, и я скомпилировал его на IDE, он работал отлично, я сделал этот пример на CMD, он дал мне ошибку

Примечание. Practice.java использует непроверенные или небезопасные операции.

Примечание: Перекомпилируйте с -Xlint: не проверено для деталей.

так что я использовал свою силу поиска в Google и все погуглил, я нашел ответ,

кстати, это код, о котором я говорю...

     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), но он дал эти 2 ошибки на CMD

многие люди по всему интернету и stackru говорят, что определяют тип данных при создании объекта ArrayList

ArrayList mylist = new ArrayList<>();

я сделал это, и он отлично работал на CMD тоже...:)

Теперь мой вопрос заключается в том, что я не могу найти в Интернете

В чем разница между компиляцией IDE и компиляцией инструментов командной строки?

(Я помню, когда я использовал для компиляции своего C- кода в TurboC и когда я перешел на code::blocks, мне пришлось изменить какой-то код для настройки компилятора, это то же самое? Но Java был независим от платформы)

3 ответа

Решение

Это интересный вопрос, я пробовал ваш код в 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

Поэтому, когда вы управляете элементом в списке, это будет небезопасно. Это имеет смысл для вас?

Одна из причин такого различия заключается в том, что ваша IDE может использовать другую версию Java, чем ваш компилятор командной строки. Вы увидите это, если ваша среда IDE Netbeans использует Java версии 1.4 или старше, а ваша командная строка использует версию 1.5 или выше.

Ваша IDE будет сообщать об одном и том же, в зависимости от версии компилятора. Насколько я помню, Java 1.4 не будет сообщать об этом как о проблеме, но 1.5 и более новые версии будут из-за того, что вы идете вразрез с дженериками.

Если все сделано правильно, нет разницы между компиляцией, выполненной в командной строке, и компиляцией, выполненной IDE. Но это означает, что вы должны быть уверены, что одна и та же версия Java используется для компиляции кода между ними.

Другие вопросы по тегам