LINUX.ORG.RU

Лучший способ передавать в метод изменяемый int.

 


2

3

Добро пожаловать на специальную олимпиаду.

Задача: пихнуть инт в метод и как-то его там поменять. Например, тупо увеличить на 1.

Какой из велосипедов вы используете?

int[], AtomicInteger, ByteBuffer, ApacheCommons MutableInt, Unsafe, что-то свое (что?)

★★★★☆

Последнее исправление: stevejobs (всего исправлений: 1)

Перестать юзать жабу

quest ★★★★
()

Задача: пихнуть инт в метод и как-то его там поменять. Например, тупо увеличить на 1.

А нужно ли, именно так?

orm-i-auga ★★★★★
()

Чо ты как не жабист? Где IChangableInteger, парочка имплементаций и DI?

bj
()
Ответ на: комментарий от orm-i-auga

ну хорошо, более частый пример: поменять значение захваченной переменной в замыкании (в inner class или lambda).

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от Deleted

так «некостылей» не существует. Так что вопрос в сортах костылей. Например, некоторые утверждают что ByteBuffer работает «лучше» (чем?), но я пока не замерял.

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от stevejobs

enjoy ur java и такое количество сахарка, что пора бы провериться на диабет

Deleted
()

Передаешь Integer, принимаешь Integer, значение меняешь через рефлексию.

slyjoeh ★★★★
()

Задача: пихнуть инт в метод и как-то его там поменять

Покажите ситуацию когда делать нужно именно так.

Мой опыт подсказывает, что у вы неправильный метод решения выбрали.

ya-betmen ★★★★★
()
Ответ на: комментарий от Miguel

во-первых, а если значений штук десять?

во-вторых, а как быть с замыканиями? Внутрь замыкания захватывается куча переменных из внешнего контекста. Хочется, чтобы они были именно переменными-переменными, но они обязаны быть final.

stevejobs ★★★★☆
() автор топика

Я всегда говорил, что от этих долбаных замыканий проблем больше, чем пользы.

CARS ★★★★
()
Ответ на: комментарий от stevejobs

поменять значение захваченной переменной в замыкании (в inner class или lambda).

Что-то ты такое делаешь не правильное, раз у тебя такая задача. Фактически ты хочешь: Как мне поменять имярек, когда класс не поддерживает изменение имярек. Я могу понять извраты с эксепшеннами в замыканиях, но для инта не могу.

vtVitus ★★★★★
()
Ответ на: комментарий от vtVitus

Фактически ты хочешь: Как мне поменять имярек, когда класс не поддерживает изменение имярек.

Ты что, вьючное животное, что подчиняешься языку программирования, вместо того, чтобы подчинять его своей воле? Класс не поддерживает. Ну сделай чтобы поддерживал.

– Ну, конечно, – весело заметил Шалтай-Болтай и взял перевернутую Алисой книжку. – То-то я смотрю, как странно все это выглядит! Поэтому я и сказал: «Кажется, здесь нет ошибки!», – хоть я и не успел разобраться как следует… Значит так: триста шестьдесят четыре дня в году ты можешь получать подарки на день нерожденья…

– Совершенно верно, – сказала Алиса.

– И только один раз на день рожденья! Вот тебе и слава!

– Я не понимаю, при чем здесь «слава»? – спросила Алиса.

Шалтай-Болтай презрительно улыбнулся.

– И не поймешь, пока я тебе не объясню, – ответил он. – Я хотел сказать: «Разъяснил, как по полкам разложил!»

– Но «слава» совсем не значит: «разъяснил, как по полкам разложил!» – возразила Алиса.

– Когда я беру слово, оно означает то, что я хочу, не больше и не меньше, – сказал Шалтай презрительно.

– Вопрос в том, подчинится ли оно вам, – сказала Алиса.

– Вопрос в том, кто из нас здесь хозяин, слова или я – сказал Шалтай-Болтай – Вот в чем вопрос!

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от stevejobs

Класс не поддерживает. Ну сделай чтобы поддерживал.

Вот после таких бабуинов и получает идеальный индусский код и слава java, как инструмента для быдло-программистов.

Убей себя пока не поздно.

vtVitus ★★★★★
()
Ответ на: комментарий от vtVitus

слава java, как инструмента для быдло-программистов

Где? О_о я не видел.

Deleted
()

По-хорошему делается класс Reference<T> и потом используется. Название можно придумать получше, но смысл такой. Для примитивных типов можно сделать ReferenceInt, чтобы лишний объект не плодить. В общеиспользуемых библиотеках такого не видел, приходится использовать всякую фигню вроде перечисленной выше, но это неправильно, т.к. из названия не очевидно, зачем взяли этот класс.

Legioner ★★★★★
()
Ответ на: комментарий от stevejobs

во-первых, а если значений штук десять?

И что, собственно? В жабе запретили возвращать объекты?

Внутрь замыкания захватывается куча переменных из внешнего контекста. Хочется, чтобы они были именно переменными-переменными

Уже плохая мысль.

Miguel ★★★★★
()
Ответ на: комментарий от stevejobs

Ты что, вьючное животное, что подчиняешься языку программирования, вместо того, чтобы подчинять его своей воле?

Я разработчик. А это значит, что если мой коллега не хочет, чтобы кто-то что-то порушил внутри класса, то я его желание должен уважать.

Miguel ★★★★★
()
Ответ на: комментарий от stevejobs

во-вторых, а как быть с замыканиями? Внутрь замыкания захватывается куча переменных из внешнего контекста. Хочется, чтобы они были именно переменными-переменными, но они обязаны быть final.

Слава аллаху, что джава препятствует такому быдлокоду.

ya-betmen ★★★★★
()

убей себя пока не поздно

anonymous
()
Ответ на: комментарий от Miguel

Можно юзать мутабельность, можно юзать иммутабельность. Использование мутабельного пути - всегда риск разрушить что-то неосторожным движением. Но этот риск оправдан, например, невероятным перфомансом достигающимся кропотливым ручным управлением ресурсами. Ты теперь предлагаешь отказаться от мутабельного пути вообще? Что нам стоит дом построить - будем делать не-переменные на каждый чих? Чтобы все скрипело и тормозило? Тормозит - зато не разваливается?

stevejobs ★★★★☆
() автор топика

пишу jni обертки, часто возникают такие проблемы. возвращаю некий объект Result со всем набором требуемых значений.

vvviperrr ★★★★★
()
Ответ на: комментарий от stevejobs

Ты теперь предлагаешь отказаться от мутабельного пути вообще?

Я предлагаю уважать своих коллег.

Miguel ★★★★★
()
Ответ на: комментарий от stevejobs

Но этот риск оправдан, например, невероятным перфомансом достигающимся кропотливым ручным управлением ресурсами.

Напоминаю, здесь в контексте java, а там другие trade-off (или как правильно). Вам в аудиторию кресто!@#$%тва или сишко!@#$ва, есть еще факультативные кружки.

anonymous
()

посоны, посоветуйте надежную конкурентную реализацию дерева произвольной арности!

anonymous
()
Ответ на: комментарий от stevejobs

Ты что, вьючное животное, что подчиняешься языку программирования, вместо того, чтобы подчинять его своей воле?

вопрос в том, является ли героическое втискивание костылей в язык подчинением языку.

RedPossum ★★★★★
()

самый простой - int[]

ii8_ ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.