Odpowiedź @ jjnguy jest w większości przypadków poprawna. Nigdy nie zobaczysz ciągu null
w tablicy argumentów (lub null
tablicy), jeśli main
jest wywoływana przez uruchomienie aplikacji jest uruchamiana z wiersza poleceń w normalny sposób.
Jeśli jednak jakaś inna część aplikacji wywoła main
metodę, można sobie wyobrazić, że może przekazać null
argument lub null
tablicę argumentów.
Jednak (2) jest to wyraźnie bardzo nietypowy przypadek użycia i jest to rażące naruszenie dorozumianej umowy dotyczącej main
metody punktu wejścia. Dlatego uważam, że nie powinieneś zawracać sobie głowy sprawdzaniem null
wartości argumentów w main
. W mało prawdopodobnym przypadku, gdy wystąpią, dopuszczalne jest, aby kod wywołujący otrzymał rozszerzenie NullPointerException
. W końcu błędem dzwoniącego jest naruszenie umowy.
null
Wyboru jest zbędne, ale masz rację, żelength
kontrola jest konieczna,jeśli chcę sprawdzić, czy jakaś konkretna pozycja argumentu wiersza poleceń została przekazana, czy nie, to jak to sprawdzić? tak jak na przykład w niektórych scenariuszach 2 argumenty wiersza poleceń zostaną przekazane, aw niektórych tylko jeden, to jak sprawdza, czy określona linia komend została przekazana, czy nie?
public class check { public static void main(String[] args) { if(args[0].length()!=0) { System.out.println("entered first if"); } if(args[0].length()!=0 && args[1].length()!=0) { System.out.println("entered second if"); } } }
Więc w powyższym kodzie, jeśli argumenty [1] nie zostaną przekazane, otrzymam java.lang.ArrayIndexOutOfBoundsException:
więc jak sobie z tym poradzić, gdzie mogę sprawdzić, czy drugi argument został przekazany, czy nie, a jeśli został zaliczony, wprowadź go. potrzebuję pomocy jak najszybciej.
źródło
Jeśli nie przekażesz żadnego argumentu, nawet w tym przypadku argumenty zostaną zainicjalizowane, ale bez żadnego elementu / elementu. Spróbuj tego, a uzyskasz ten sam efekt :
public static void main(String[] args) throws InterruptedException { String [] dummy= new String [] {}; if(dummy[0] == null) { System.out.println("Proper Usage is: java program filename"); System.exit(0); } }
źródło
main
metoda zostanie wywołana zargs
tablicą o długości równej zero.dummy[0]
wyrzuca indeks tablicy poza granicami wyjątku !! Podobnie, jeśli zmienisz program (z powrotem) na testowanieargs[0]
i uruchomisz go bez argumentów.