JavaRush /Java Blog /Random-TK /Nol däl uzynlykdaky massiwini yzyna gaýtaryň
alexnjc
Dereje

Nol däl uzynlykdaky massiwini yzyna gaýtaryň

Toparda çap edildi
Köplenç şuňa meňzeş usullar bar:
private List cheesesInStock =;
/**
* @return массив, содержащий все сыры, имеющиеся в магазине,
* or null, если сыров для продажи нет.
*/
public Cheese[] getCheeses() {
if (cheesesInStock.size() == 0)
return null;
}
Satuwda peýnir ýok ýagdaýyna aýratyn ýagdaý hökmünde garamaga hiç hili sebäp ýok. Bu, müşderiden usulyň yzyna gaýtaryş bahasyny gaýtadan işlemek üçin goşmaça kod ýazmagyny talap edýär пull:
Cheese[] cheeses = shop.getCheeses();
if (cheeses ! = пull &&
Аrrауs.аsList(shор.gеtСhееsеs()).соntаins(Сhееsе.SТILТON))
Sуstеm.оut.рrintln("Jоllу good, just the thing.");
ýönekeý ýerine:
if  (Аrrаys.аsList(shор.gеtСhееsеs()).соntаins(Сhееsе.SТILTON)) Sуstеm.оut.рrintln("Jоllу good, just the thing.");
Bu hili söz, nol uzynlykdaky massiwiň ýerine null gaýdyp gelýän her bir usul çagyryşy üçin zerurdyr. Bu ýalňyşlyklar bilen doldurylýar, sebäbi müşderini taýýarlaýjy netijäni işlemek üçin ýörite kod ýazmadyk bolmagy mümkin null. Erroralňyşlyk birnäçe ýyllap gözlenip bilinmez, sebäbi beýle usullar adatça bir ýa-da birnäçe obýekti yzyna gaýtaryp berýär. nullŞeýle hem , bir massiwiň ýerine gaýdyp gelmegiň, massiwiň yzyna gaýtarylýan usulyň çylşyrymly bolmagyna sebäp bolýandygyny hem bellemelidiris . Käwagt null gaýdyp gelmek, nol uzynlykdaky massiwiň yzyna gaýtarylmagynyň ileri tutulýandygy barada jedel edilýär, sebäbi bu massiwiň ýadyna bölünmek çykdajylaryndan gaça durýar. Bu argument iki sebäbe görä başa barmaýar. Ilki bilen, programmanyň tertibi bu aýratyn usulyň öndürijiligiň peselmeginiň esasy sebäbini görkezmese, bu derejedäki öndürijilik barada alada etmegiň manysy ýok. Ikinjiden, ýazgylary yzyna gaýtarmaýan usula edilen her bir jaň, şol bir nol uzynlyk massiwini müşderä geçirip biler, sebäbi islendik nol uzynlykdaky massiw üýtgewsiz we üýtgemeýän zatlar paýlaşylyp bilner. Aslynda, kolleksiýadan elementleri görnüşe gözegçilik edilýän massiwlere taşlamak üçin adaty idiom ulananyňyzda edil şeýle bolýar:
private List сhееsеsInStосk =,
private fiпаl static Cheese[] NULL_CHEESE_ARRAY = nеw Cheese[0];
 /**
* @геtuгп массие, содержащий все сыры, имеющиеся в магазине
*/
public Cheese[] getCheeses() {
геtuгп (Cheese[] сhееsеsInStосk.tоАггау(NULL_СНЕЕSЕ_АRRАУ);
}
Bu manyda, hemişelik, nol uzynlykdaky massiwtoArray hökmünde haýsy görnüşe gaýdyp gelmelidigini görkezmek usulyna geçirilýär. Adatça, usul toArrayyzyna gaýdyp gelen massiw üçin ýat ýerini bölýär, ýöne kolleksiýa boş bolsa, giriş massiwine ýerleşdirilýär we spesifikasiýa Сollесtion,tоАггау(Оbjесt[])giriş massiwiniň kolleksiýany öz içine almak üçin ýeterlik derejede uly bolmagyny üpjün edýär. Şonuň üçin hödürlenen idiom hiç wagt nol uzynlykdaky massiw ýadyna bölmez, ýöne “tipli hemişelik” ulanýar. Gysgaça jemläliň. Bir massiw usulynyň nol uzynlykdaky massiw däl-de, null gaýdyp gelmegine hiç hili sebäp ýok. Bu söz, bir massiwiň uzynlygy, massiwiň özünden aýratyn gaýtarylýan C programmirleme dilinden gelip çykýan ýaly. C-de nol uzynlykdaky massiw üçin ýady bölmek peýdasyz. Çeşme: Joşua Bloç, Java TM täsirli programmirleme, Lori neşirýat
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION