А как там заводятся эти объекты? Мне кажется, что должно было что-то все-таки произойти помимо просто Integer x = new Integer(5); Integer y = new Integer(5);. Какой-нибудь хитрый боксинг-анбоксинг?..
Я на джаве не пишу никогда, поэтому не сталкивалась с этим, но в принципе все эти вещи, конечно, нужны (Integer class и пр.), но тогда и пользоваться ими нужно соответственно. Если у тебя класс, то и не надо писать Integer x = 5, надо использовать new? Наверное.
На самом деле понимаю твои чувства, разумеется, всецело :). Я бы с ума сошла, наверное :).
Я сварщик не настоящий, яву вижу в первый раз. Про боксинг только вот уже после, на stakeoverflow прочитала.
В нашем случае нужно было завести эти переменные как тривиальный int и все было бы хорошо. Не знаю, зачем она завела их как объект Integer, нужды в этом никакой не было. Чтоб работало так, как есть надо было бы сравнивать i.value==j.value видимо.
Upd. А вернее надо видимо i.equals(j) и пусть уж объект сам внутри себя сравнивает.
Однажды я целый день искала баг в коде на C#, и там в итоге тоже оказалось дело в том, что были поиспользованы всякие хитрые модные фичи без понимания, зачем :). Вполне типичный случай. Ну, я сама горазда, конечно, не хочу ничего сказать :).
Я бы скорее сказал, что раз уж отказались от поинтеров, то нефиг вообще разрешать операцию == на объектах. Ну или как VB - назначать одно из свойств объекта свойством по умолчанию и сравнивать его, когда клиент просит сравнить объект (ужасное решение, но всяко лучше, чем сравнивать поинтеры).
Я подозреваю, что переписавшая код коллега не имела особого опыта с явой и программированием вообще. В дотнетовском коде у нас было Integer, ну и она сделала Integer.
Очевидно. Ты знакома с сайтом http://thedailywtf.com/ ? Там часто _такие_ перлы встречаются. Классическое if (a.toString().length() == 4) - это не шутка, это реально попадающийся кусок кода.
Я как-то раз должен был переписать огромный кусок с VBA на MatLab. Ты не поверишь, но да - я просто скопировал код, а потом массовой заменой попытался сделать так, чтобы он заработал. И он заработал :-) Как ты понимаешь, при таком подходе нам уже не до мелочей.
Я на джаве не пишу никогда, поэтому не сталкивалась с этим, но в принципе все эти вещи, конечно, нужны (Integer class и пр.), но тогда и пользоваться ими нужно соответственно. Если у тебя класс, то и не надо писать Integer x = 5, надо использовать new? Наверное.
На самом деле понимаю твои чувства, разумеется, всецело :). Я бы с ума сошла, наверное :).
Reply
В нашем случае нужно было завести эти переменные как тривиальный int и все было бы хорошо. Не знаю, зачем она завела их как объект Integer, нужды в этом никакой не было. Чтоб работало так, как есть надо было бы сравнивать i.value==j.value видимо.
Upd. А вернее надо видимо i.equals(j) и пусть уж объект сам внутри себя сравнивает.
Reply
http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java
Однажды я целый день искала баг в коде на C#, и там в итоге тоже оказалось дело в том, что были поиспользованы всякие хитрые модные фичи без понимания, зачем :). Вполне типичный случай. Ну, я сама горазда, конечно, не хочу ничего сказать :).
Reply
Reply
Reply
Reply
В дотнетовском коде у нас было Integer, ну и она сделала Integer.
Reply
Reply
Reply
Leave a comment