JavaRush /Блоги Java /Random-TG /Массиви дарозии сифрро баргардонед, на нул
alexnjc
Сатҳи

Массиви дарозии сифрро баргардонед, на нул

Дар гурӯҳ нашр шудааст
Аксар вақт усулҳое мавҷуданд, ки ба ин монанданд:
private List cheesesInStock =;
/**
* @return массив, содержащий все сыры, имеющиеся в магазине,
* or null, если сыров для продажи нет.
*/
public Cheese[] getCheeses() {
if (cheesesInStock.size() == 0)
return null;
}
Ҳеҷ гуна сабабе вуҷуд надорад, ки ҳамчун як ҳолати махсус муносибат кунед, ки дар он панир дар фурӯш мавҷуд нест. Ин аз муштарӣ талаб мекунад, ки барои коркарди арзиши баргардонидани усул рамзи иловагӣ нависад п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.");
ба ҷои оддӣ:
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.");
Ин гуна тафсилот тақрибан барои ҳар як занги методӣ зарур аст, ки ба ҷои массиви сифрӣ нулро бармегардонад. Ин бо хатогиҳо зиёд аст, зеро таҳиягари муштарӣ метавонад барои коркарди натиҷа рамзи махсус нанавишта бошад null. Хатогӣ метавонад дар тӯли солҳо ошкор нашавад, зеро чунин усулҳо одатан як ё якчанд an objectро бармегардонанд. Инчунин бояд қайд кард, ки баргардонидан nullба ҷои массив боиси мушкorи худи усуле мегардад, ки массивро бармегардонад. Баъзан баҳс мекунанд, ки баргардонидани нул назар ба баргардонидани массиви сифрӣ афзалтар аст, зеро он аз хароҷоти ҷудо кардани массив дар хотира канорагирӣ мекунад. Ин далел бо ду сабаб ноком мешавад. Аввалан, ғамхорӣ кардан дар бораи иҷрои ин сатҳ ҷоиз нест, агар профor барнома нишон надиҳад, ки ин усули мушаххас сабаби асосии таназзули кор аст. Дуюм, ҳар як занг ба усуле, ки сабтҳоро барнамегардонад, метавонад ҳамон массиви сифриро ба муштарӣ гузаронад, зеро ҳама массиви сифрӣ тағирнопазир аст ва an objectҳои тағирнашаванда метавонанд мубодила шаванд. Дар асл, ин маҳз ҳамон чизест, ки ҳангоми истифодаи идиомаи стандартӣ барои партофтани унсурҳо аз коллексия ба массиви аз рӯи намуди идорашаванда истифода мешавад:
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АУ);
}
Дар ин идиома, доимӣ ҳамчун массиви сифрӣ ба усул интиқол дода мешавад toArray, то нишон диҳад, ки кадом навъи он бояд баргардад. Одатан, усул toArrayфазои хотираро барои массиви баргардонида ҷудо мекунад, аммо агар коллексия холӣ бошад, он дар массиви вуруд ҷойгир карда мешавад ва мушаххасот Сollесtion,tоАггау(Оbjесt[])кафолат медиҳад, ки агар массиви вуруд ба андозаи кофӣ калон бошад, то коллексияро дар бар гирад, он чизест, ки баргардонида мешавад. Аз ин рӯ, идиомаи пешниҳодшуда ҳеҷ гоҳ худаш массиви дарозии сифрро ба хотира ҷудо намекунад, балки ҳамчун "константи мушаххаси навъи" -ро истифода мебарад. Биёед ҷамъбаст кунем. Барои баргардонидани нул усули массив ба ҷои массиви сифрӣ ягон сабаб вуҷуд надорад. Чунин ба назар мерасад, ки ин идиома аз забони барномасозии Си сарчашма мегирад, ки дар он дарозии массив аз худи массив алоҳида баргардонида мешавад. Дар C, ҷудо кардани хотира барои массиви сифрӣ бефоида аст. Манбаъ: Ҷошуа Блох, Java TM Effective Programming, Lori Publishing House
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION