JavaRush /Blog Jawa /Random-JV /Trik lan tips. Carane supaya NullPointerException ing apl...
DarthVictor
tingkat

Trik lan tips. Carane supaya NullPointerException ing aplikasi Java

Diterbitake ing grup
Trik lan tips.  Cara ngindhari NullPointerException ing aplikasi Java - 1Dina iki aku bakal nuduhake sampeyan teknik sing gampang kanggo ngindhari NullPointerException ing aplikasi sampeyan. Iku gampang kanggo tindakake, nanging Ngartekno nambah linuwih lan kualitas kode. Kajaba iku, ing pengalamanku, tip pisanan bakal duwe pengaruh sing nyata babagan kualitas kode sampeyan. Yen sampeyan ngerti trik pemrograman Java liyane, aja ragu-ragu kanggo nuduhake ing komentar. Trik lan tips.  Cara ngindhari NullPointerException ing aplikasi Java - 2

Nelpon metode equals () lan equalsIgnoreCase () ing string literal sing dikenal tinimbang obyek sing ora dingerteni

Tansah nelpon cara equals()ing senar dikenal sing ngerti ora null. Cara equals()kasebut simetris, yaiku nelpon a.equals(b)lan b.equals(a)bakal menehi asil sing padha (yen alan bora null), lan mulane akeh programer ora menehi perhatian marang obyek sing diarani equals(), y autawa y b. Salah sawijining efek samping yaiku NullPointerException yen metode kasebut diarani null.
Object unknownObject = null;

//плохой способ - может вызвать NullPointerException
if(unknownObject.equals("knownObject")){
   System.err.println("This may result in NullPointerException if unknownObject is null");
}

//правильный способ - исключение NullPointerException не возникнет, даже если unknownObject null
if("knownObject".equals(unknownObject)){
    System.err.println("better coding avoided NullPointerException");
}
Iki minangka tip paling gampang kanggo ngindhari NullPointerException, nanging mung nggawe dandan gedhe amarga cara kasebut equals()ditemokake ing endi wae.

Pilih valueOf () liwat toString () ing kasus loro-lorone ngasilake asil sing padha

Wiwit nelpon toString()referensi karo Nilai nulluncalan NullPointerException, iku luwih apik kanggo nggunakake nelpon valueOf()nalika kita bisa njaluk asil padha, wiwit nelpon valueOf()saka nullbali null. Iki utamané bener kanggo kelas wrapper kayata Integer, Float, Doubleutawa BigDecimal.
BigDecimal bd = getPrice();
System.out.println(String.valueOf(bd)); //не выбрасывает NPE
System.out.println(bd.toString()); //выбрасывает "Exception in thread "main" java.lang.NullPointerException"
Gunakake tips iki yen sampeyan ora yakin apa obyek bisa ana nullutawa ora.

Gunakake nullcara lan perpustakaan sing aman

Ana akeh perpustakaan open source sing njupuk beban abot saka testing kanggo null. Salah siji sing paling umum yaiku StringUtilssaka Apache Commons. Nggunakake cara kayata StringUtils.isBlank(), isNumeric(), isWhiteSpace()etc. sampeyan ora kudu padha sumelang ing bab uncalan NullPointerException.
//Методы StringUtils являются null-безопасными, они не вызовут NullPointerException
System.out.println(StringUtils.isEmpty(null));
System.out.println(StringUtils.isBlank(null));
System.out.println(StringUtils.isNumeric(null));
System.out.println(StringUtils.isAllUpperCase(null));
Output: bener bener palsu palsu Nanging, sadurunge nggunakake, aja lali kanggo maca dokumentasi nullcara aman lan kelas. Iki minangka salah sawijining trik Java paling apik sing ndadékaké dandan gedhe tanpa mbutuhake gaweyan.

Coba ora bali nullsaka cara, luwih becik bali koleksi kosong

Iki minangka tip pemrograman Java liyane sing digambarake Joshua Bloch ing bukune Java: Programming Efektif. Nalika bali nglumpukke kosong utawa susunan, priksa manawa cara dhasar nelpon kaya size()utawa length()ora uncalan NullPointerException. Kelas kasebut Collectionskanthi khusus nyatakake implementasine trep saka dhaptar kosong, set lan kamus: Collections.EMPTY_LIST, Collections.EMPTY_SETlan Collections.EMPTY_MAP. Tuladhane:
public List getOrders(Customer customer){
   List result = Collections.EMPTY_LIST;
   return result;
}
Kajaba iku, sampeyan bisa nggunakake Collections.EMPTY_SETtinimbang Collections.EMPTY_MAPbali null.

Gunakake @NotNull lan @Nullable anotasi

Ing katrangan cara sampeyan, sampeyan bisa nemtokake nullkonvensi safety metode nggunakake anotasi @NotNulllan @Nullable kanggo nunjukake apa cara bisa bali nullutawa ora. Kompiler lan IDE modern bisa nggunakake anotasi kasebut kanggo nganalisa kode sampeyan lan menehi saran sing cocog, contone, babagan mriksa cek kanggo null, utawa kosok balene, babagan kemungkinan mbusak mriksa sing ora perlu sing ngalangi kode kasebut. Anotasi kasebut, contone, didhukung dening IntelliJ IDE lan FindBugs, lan uga kalebu JSR 305. Nanging sanajan IDE sampeyan ora ndhukung anotasi kasebut, bakal dadi dokumentasi sing apik ing awake dhewe. Nggoleki @NotNulllan @Nullablebakal luwih gampang kanggo programmer ngerti ngendi kanggo nambah mriksa nulllan ngendi ora. Iki, kanthi cara, minangka praktik sing cukup anyar ing antarane programer Jawa, lan butuh wektu kanggo nyebar.

Ngindhari autoboxing lan autounboxing sing ora perlu ing kode sampeyan

Ora mung iki ndadékaké kanggo nggawe obyek sauntara rasah, nanging autoboxing uga bisa uncalan NullPointerException yen kelas pambungkus punika null. Contone, kode ing ngisor iki bakal mbuwang NullPointerException yen entri wong ora ngemot nomer telpon lan bali null.
Person ram = new Person("ram");
int phone = ram.getPhone();
Nalika nggunakake autoboxing utawa autounboxing, ora mung podo, nanging uga inequalities <> >bisa nyebabake NullPointerException.

Tindakake konvensi lan nemtokake standar sing cukup.

Salah sawijining cara sing paling apik kanggo ngindhari NullPointerException ing Jawa yaiku ngumumake lan ngetutake konvensi coding. Umume NullPointerExceptions kedadeyan nalika sampeyan nyoba nggawe obyek tanpa kabeh data lan dependensi sing dibutuhake. Kanthi nyegah nggawe obyek sing durung rampung kanthi nolak panjaluk kasebut kanthi apik, sampeyan bakal nylametake dhewe saka akeh NullPointerExceptions ing mangsa ngarep. Kajaba iku, yen sampeyan ngidini nggawe obyek, sampeyan kudu milih nilai standar sing cukup. Contone, obyek kelas Employeeora bisa digawe tanpa jeneng lan id, nanging ora duwe nomer telpon. Ing kasus iki, obyek Employeetanpa nomer bisa bali nol tinimbang null. Sanajan prilaku obyek kasebut kudu dipikirake sadurunge - bisa uga luwih gampang dipriksa tinimbang nullnelpon nomer sing ora ana. Ing kasus iki, duwe kahanan tambahan ing lapangan sing ana nulllan sing ora bakal mbantu nggawe keputusan sing bener. Umumé, pilihan antarane langsung nabrak program utawa nemtokake nulliku kaputusan desain penting, lan yen sampeyan wis nggawe pilihan, sampeyan kudu tindakake terus-terusan.

Setel watesan ing tingkat DBMS

Nalika nggunakake database kanggo nyimpen obyek program, kayata Pelanggan utawa Pesenan, iku wicaksana kanggo nemtokake " nullness" obyek ing tingkat DBMS, nggunakake watesan Tabel cocok. Basis data asring ngemot informasi saka macem-macem sumber, lan ngenalake mriksa kanggo nilai sing ilang bakal nambah integritas data sampeyan. Kajaba iku, anané mriksa kanggo null ing tingkat DBMS bakal nyuda ing kode Jawa: kanthi ngemot data saka database menyang obyek Jawa, sampeyan bisa yakin ing ngarsane lan mbusak rasah " != null" saka kode program.

Gunakake Pola Objek Null

Nggawe Nullobyek khusus minangka cara liya kanggo nyegah NullPointerExcpetion ing Jawa. Ayo nganggep manawa sawetara metode ing aplikasi kita ngasilake obyek sing bakal ditindakake program kasebut kanthi nelpon metode kasebut. Contone, cara Collection.iterator()ngasilake obyek saka kelas Iteratorsing digunakake kanggo ngulang koleksi. Banjur yen obyek asli ora duwe iterator, nullsampeyan bisa uga ngasilake Nullobyek khusus sing nduweni metode hasNext()sing tansah ngasilake false. Mekaten, para maos ingkang minulya, ing ngriki kula mungkasi tips kangge nyingkirake kesalahan NullPointerException ing program Java. Sampeyan bakal ngormati carane migunani aturan sing prasaja lan ora ngebotake iki. Minangka pangeling, yen sampeyan pengin nuduhake trik NullPointerException liyane ing program Jawa, aja ragu-ragu kanggo nindakake ing komentar. Diterjemahake khusus kanggo siswa JavaRush. Asli
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION