Sistem jenis Java tidak menyokongnya dan hanya boleh dilaksanakan melalui pemalam: Rangka Kerja Pemeriksa Untuk menambah anotasi, nyatakan pemalam semasa penyusunan.
Perkara di atas melaksanakan pengesanan nol pengkompil Bagi ranap jika nol dilalui, ini boleh dicapai dengan memasukkan kod semakan nol melalui pemalam.
Soalan yang bagus Saya biasanya hanya menumpukan pada cara melaksanakan fungsi, tetapi saya tidak terlalu memikirkan mengapa Java tidak melaksanakannya dengan cara ini, seperti soalan ini. Ia juga menimbulkan banyak imaginasi liar dalam diri saya Alangkah baiknya jika sintaks Java disokong sekurang-kurangnya beberapa kali lebih tinggi, tetapi apabila saya memikirkannya semula, ada sesuatu yang tidak kena.
Terdapat sebab tertentu mengapa NullPointerException ialah pengecualian masa jalan
Dengan mengandaikan Java menyokong sintaks sedemikian, gunakan anotasi: @NotNullTunjukkan bahawa parameter tidak kosong
Senario seperti ini: selepas pengguna berjaya log masuk, masa log masuk dan IP pengguna dikemas kini.
Data pengguna termasuk:
name
password
lasttime
ip
aaa
123456
2017-01-09
192.168.1.1
bbb
123456
2017-01-08
192.168.1.1
Kemas kini kod pseudo maklumat pengguna:
public void updateAccount(@NotNull Account account) {
// 因为肯定不为空,可以放心大胆的更新Account的最新登录时间、ip
}
@NotNull menunjukkan parameter: account tidak boleh kosong, tiada masalah di sini.
Dapatkan kod pseudo log masuk pengesahan maklumat pengguna:
Maka persoalannya, bolehkah parameter akaun dihantar ke kaedah service.updateAccount(), dan bolehkah kompilasi itu lulus? Objek Accoount yang dibaca daripada pangkalan data sememangnya merupakan objek yang samar-samar Ia mungkin mewakili orang tertentu atau mungkin null.
Kemudian jadikan nilai pulangan bukan nol?
Ya, ia boleh menjadi seperti ini menjadi corak yang dipanggil NullObject Pattern (NullObject Pattern) , yang bermaksud untuk mencipta objek kosong khusus untuk menyatakan bahawa hasilnya kosong.
Sistem jenis Java tidak menyokongnya dan hanya boleh dilaksanakan melalui pemalam: Rangka Kerja Pemeriksa Untuk menambah anotasi, nyatakan pemalam semasa penyusunan.
Perkara di atas melaksanakan pengesanan nol pengkompil Bagi ranap jika nol dilalui, ini boleh dicapai dengan memasukkan kod semakan nol melalui pemalam.
Soalan yang bagus Saya biasanya hanya menumpukan pada cara melaksanakan fungsi, tetapi saya tidak terlalu memikirkan mengapa Java tidak melaksanakannya dengan cara ini, seperti soalan ini. Ia juga menimbulkan banyak imaginasi liar dalam diri saya Alangkah baiknya jika sintaks Java disokong sekurang-kurangnya beberapa kali lebih tinggi, tetapi apabila saya memikirkannya semula, ada sesuatu yang tidak kena.
Terdapat sebab tertentu mengapa NullPointerException ialah pengecualian masa jalan
Dengan mengandaikan Java menyokong sintaks sedemikian, gunakan anotasi:
@NotNull
Tunjukkan bahawa parameter tidak kosongSenario seperti ini: selepas pengguna berjaya log masuk, masa log masuk dan IP pengguna dikemas kini.
Data pengguna termasuk:
Kemas kini kod pseudo maklumat pengguna:
@NotNull
menunjukkan parameter:account
tidak boleh kosong, tiada masalah di sini.Dapatkan kod pseudo log masuk pengesahan maklumat pengguna:
Kami hanya tidak mahu parameter kosong dan kami tidak mahu nilai pulangan kosong, jadi tiada masalah.
Kod pseudo penghakiman logik utama:
Maka persoalannya, bolehkah parameter akaun dihantar ke kaedah
service.updateAccount()
, dan bolehkah kompilasi itu lulus? ObjekAccoount
yang dibaca daripada pangkalan data sememangnya merupakan objek yang samar-samar Ia mungkin mewakili orang tertentu atau mungkinnull
.Kemudian jadikan nilai pulangan bukan nol?
Ya, ia boleh menjadi seperti ini menjadi corak yang dipanggil NullObject Pattern (NullObject Pattern) , yang bermaksud untuk mencipta objek kosong khusus untuk menyatakan bahawa hasilnya kosong.
Sila semak untuk butiran:
https://segmentfault.com/q/10...
http://www.cnblogs.com/haodaw...