|
Java 8 - уже не совсем Java?
|
|||
---|---|---|---|
#18+
DoSOfRedRiver, Тот случай когда хотел сумничать а в результате пернул в лужу. Причём тут вообще свойства массива? Речь исключительно о данных внутри, гетерогенность которых приводит к необходимости делать проверку типа в коде. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2016, 07:53 |
|
Java 8 - уже не совсем Java?
|
|||
---|---|---|---|
#18+
Blazkowicz, Blazkowiczот случай когда хотел сумничать а в результате пернул в лужу. Я тоже вот что-то такое подумал, когда твоё сообщение прочитал. Где тут гетерогенность то? Чем ссылка на Object отличается от ссылки на Object, а? Чо теперь, любая ковариантная коллекция в Джаве стала гетерогенной ? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2016, 17:00 |
|
Java 8 - уже не совсем Java?
|
|||
---|---|---|---|
#18+
DoSOfRedRiverЯ тоже вот что-то такое подумал, когда твоё сообщение прочитал. Что-то подумал, но не понял что? DoSOfRedRiverГде тут гетерогенность то? В данных. Сколько раз это нужно написать чтобы до тебя дошло? DoSOfRedRiverЧем ссылка на Object отличается от ссылки на Object, а? Чо теперь, любая ковариантная коллекция в Джаве стала гетерогенной ? У тебя ещё и с логикой туго? То что коллекция может содержать гетерогенные данные ещё не значит что данные в ней действительно гетерогенные. И то что данные гетерогенные в данном конкретном случае, ещё не значит что все коллекции имеют гетерогенные данные. Урок логики окончен. Переваривай. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2016, 17:09 |
|
Java 8 - уже не совсем Java?
|
|||
---|---|---|---|
#18+
Вместо того, чтобы спорить о том, какой термин глубже объясняет смысл природы вещей, объяснил бы чем проверка на instance of отличается от проверки значения поля? Или ты предлагаешь хранить в коллекциях только абсолютно тождественные объекты? Может TC действие, в котором важно, что там строка или не строка важно только раз в год. А во всех остальных случаях нужен именно Object. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2016, 17:15 |
|
Java 8 - уже не совсем Java?
|
|||
---|---|---|---|
#18+
Blazkowicz, DosOfRedRiver девочки не ссортьесь. Пустяк ведь. Топик нормальный. Нормально обсуждаем. К чему нам закрытие. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2016, 17:29 |
|
Java 8 - уже не совсем Java?
|
|||
---|---|---|---|
#18+
Сергей АрсеньевВместо того, чтобы спорить о том, какой термин глубже объясняет смысл природы вещей, объяснил бы чем проверка на instance of отличается от проверки значения поля? Да, прописные истины , вроде From Effective C++, by Scott MeyersAnytime you find yourself writing code of the form "if the object is of type T1, then do something, but if it's of type T2, then do something else," slap yourself Касательно проверки на тип. Гетерогенные данные приводят к тому что тебе нужно писать такую проверку в каждом месте, где ты собрался их использовать. Касательно проверки поля, это практически так же плохо, так как доступ к полю не виртуален. Мало того он ещё и инкапсуляцию, в большинстве случаев, нарушает, учитывая приведенный код. Сергей АрсеньевИли ты предлагаешь хранить в коллекциях только абсолютно тождественные объекты? И эти люди предлагают мне не спорить о терминологии. "Тождественность" здесь каким боком вообще. Я предлагаю не хранить в коллекциях объекты разных типов. Если у тебя массив типа Object, то оперировать ты должен только методами типа Object с этим массивом. Если тебе приходится смотреть внутрь каждого объекта, чтобы понять можешь ли ты им оперировать, то значит где-то ты уже наговнокодил. Сергей Арсеньев Может TC действие, в котором важно, что там строка или не строка важно только раз в год. А во всех остальных случаях нужен именно Object. Может это уже обсуждение сферических коней в вакууме? Частота выполнения кода как относится к его качеству вообще? Или опять качество меряем производительностью? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2016, 18:12 |
|
Java 8 - уже не совсем Java?
|
|||
---|---|---|---|
#18+
BlazkowiczDoSOfRedRiverГде тут гетерогенность то? В данных. Сколько раз это нужно написать чтобы до тебя дошло? DoSOfRedRiverЧем ссылка на Object отличается от ссылки на Object, а? Чо теперь, любая ковариантная коллекция в Джаве стала гетерогенной ? У тебя ещё и с логикой туго? То что коллекция может содержать гетерогенные данные ещё не значит что данные в ней действительно гетерогенные. И то что данные гетерогенные в данном конкретном случае, ещё не значит что все коллекции имеют гетерогенные данные. Урок логики окончен. Переваривай. Ага. То есть, сначала у нас были: BlazkowiczГетерогенные коллекции и массивы а теперь появились "гетерогенные данные". Можно узнать, что это за отношение гетерогенности такое? Давай ещё раз, постарайся: Object [] - это массив указателей на Object. Он [массив] не является гетерогенным, не содержит "гетерогенных данных". Что такое гетерогенная коллекция я уже объяснил. Есть что по существу возразить? mayton, Обсуждение терминологии - важная часть индустрии. А по стилистике - всё ОК, никто на личности не переходит. Самому хочется знать. ВДРУГ я не прав. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2016, 19:35 |
|
Java 8 - уже не совсем Java?
|
|||
---|---|---|---|
#18+
Сергей АрсеньевВместо того, чтобы спорить о том, какой термин глубже объясняет смысл природы вещей, объяснил бы чем проверка на instance of отличается от проверки значения поля? Или ты предлагаешь хранить в коллекциях только абсолютно тождественные объекты? Может TC действие, в котором важно, что там строка или не строка важно только раз в год. А во всех остальных случаях нужен именно Object. Тут соглашусь с Blazkowicz. Как правило, такие вот сигнатуры - зло во коде, и нафиг не нужны. Почти любую функцию можно переписать без Object. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2016, 19:40 |
|
Java 8 - уже не совсем Java?
|
|||
---|---|---|---|
#18+
DoSOfRedRiver, Натянул сову на глобус. Молодец. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2016, 20:17 |
|
Java 8 - уже не совсем Java?
|
|||
---|---|---|---|
#18+
DoSOfRedRiverМожно узнать, что это за отношение гетерогенности такое? То самое, которое требует instanceof String DoSOfRedRiverОн [массив] не является гетерогенным, не содержит "гетерогенных данных". Весь интернет пользуется, а у тебя "не является". http://stackoverflow.com/questions/16363547/how-to-declare-an-array-of-different-data-types DoSOfRedRiverЧто такое гетерогенная коллекция я уже объяснил. Объяснил он. Теперь гуглу объясни: https://www.google.com/search?q=define: heterogenous collection https://wiki.haskell.org/Heterogenous_collections Does some kind of collection of objects with different types in Haskell exist? Вопросы? DoSOfRedRiverЕсть что по существу возразить? Ты тут не первый кто пытается таким способом самоутвердится. Но уж если обосрался, имей смелость в этом признаться хотя бы себе. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2016, 20:32 |
|
Java 8 - уже не совсем Java?
|
|||
---|---|---|---|
#18+
Blazkowicz, Слушай, ты меня утомил. BlazkowiczТо самое, которое требует instanceof String instanceof требуется чтобы не словить ошибку приведения типов. А это твоё отношение как-то записывается, или оно только в твоей голове существует, и на математический язык не перекладывается? BlazkowiczDoes some kind of collection of objects with different types in Haskell exist? Классно, выдрал цитатку из статьи про ДРУГОЙ ЯЗЫК который НЕ ПОДДЕРЖИВАЕТ ООП. Я могу тебе эссе на "Идиота" Достоевского запостить сюда. btw, если дальше читал, там написано следующее: https://wiki.haskell.org/Heterogenous_collections Obviously, tuples are an example, but they have a fixed length. To compare tuples vs lists: Tuples - Heterogeneous Lists - Homogeneous Ты так и не ответил на вопрос: DoSOfRedRiverЧо теперь, любая ковариантная коллекция в Джаве стала гетерогенной? Если так, то можешь не отвечать дальше, нам не о чем поговорить будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2016, 21:50 |
|
Java 8 - уже не совсем Java?
|
|||
---|---|---|---|
#18+
DoSOfRedRiverСлушай, ты меня утомил. Хорошая попытка вызвать жалость. Но нет. DoSOfRedRiverА это твоё отношение как-то записывается, или оно только в твоей голове существует, и на математический язык не перекладывается? Какой нахрен математический язык? Мы тут что дисер защищаем? DoSOfRedRiverКлассно, выдрал цитатку из статьи про ДРУГОЙ ЯЗЫК который НЕ ПОДДЕРЖИВАЕТ ООП. Я могу тебе эссе на "Идиота" Достоевского запостить сюда. Тебе удобно не замечать всех остальных ссылок из гугла. Ну, что же. Бывает. ООП тут вообще при чем??? Типизация есть? Так вот речь о ней. DoSOfRedRivertuples vs lists: Tuples - Heterogeneous Lists - Homogeneous А вот это уже конкретика хаскеля. Но тебя этот факт мало волнует. Ты готов за любую нелепость зацепиться? DoSOfRedRiverТы так и не ответил на вопрос: DoSOfRedRiverЧо теперь, любая ковариантная коллекция в Джаве стала гетерогенной? Ты так и не понял ответ. Речь не о коллекции как типе и её свойствах, речь о коллекции как наборе данных. DoSOfRedRiverЕсли так, то можешь не отвечать дальше, нам не о чем поговорить будет. Ну, так и не истери, если тебе не о чем говорить. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2016, 09:11 |
|
Java 8 - уже не совсем Java?
|
|||
---|---|---|---|
#18+
Вот никому не известный сайт пишет: Коллекция может хранить объекты только одного или различных типов. Во втором случае говорят о гетерогенной коллекции. А вот никому не известный автор http://www.k-press.ru/cs/2008/3/generic/generic.asp Теория и практика Java. Эксперименты с generic-методами Автор: Брайен Гетц ... С другой стороны, raw-тип List является гетерогенным; ... Оригинал, если вдруг кто-то решит что это отсебятина переводчика http://www.ibm.com/developerworks/library/j-jtp04298/ Ну, что? Тут уже не так просто ляпнуть, что Хаскель это не ООП язык, поэтому термины типизации там совсем не такие? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2016, 09:23 |
|
Java 8 - уже не совсем Java?
|
|||
---|---|---|---|
#18+
DoSOfRedRiver, Всё я понял, причину твоего заблуждения. Ты увидел, что тип параметра Object[], и ты знаешь что это не очень хорошо и решил что именно по этой причине я называю такой массив гетерогенным. А это не так. Object[] это, конечно, не очень хорошо, но это не корень проблемы, а её следствие. Проблема в том что автор в этом массиве хранит гетерогенную коллекцию, которая требует от него явных проверок на тип. Это ключевая проблема. То есть речь идёт не о коллекции-типе, как тебе показалось, а о коллекции-объекте, как состоянии. И это не только ключевая проблема, но и на много более критичная проблема, по сравнению с использованием типа Object[]. Что тоже не фонтан, но, не вызывает таких проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2016, 14:26 |
|
Java 8 - уже не совсем Java?
|
|||
---|---|---|---|
#18+
BlazkowiczКасательно проверки на тип. Гетерогенные данные приводят к тому что тебе нужно писать такую проверку в каждом месте, где ты собрался их использовать. Этак мы дойдем до - нафиг нужно наследование? Или куча хреновый способ размещать объекты в памяти - все превращает в свалку. :) Не везде где собрался использвать, а там гда от этого что-то зависит. Если у людей вся логика построена на вызове метода hashCode() и equals() Или вообще это коллекция со списком мониторов. Зачем им разные списки? Да ТС может захотел на время засунуть туда логгер для строк - ему надо проверять строка не строка. Но основную логику перефигачивать ради такой задачи глупо, IMHO. Blazkowicz Я предлагаю не хранить в коллекциях объекты разных типов. Хорошее решение в 99% случаев. BlazkowiczМожет это уже обсуждение сферических коней в вакууме? Частота выполнения кода как относится к его качеству вообще? Или опять качество меряем производительностью? Он самый в вакууме. Хороший код это тот, который делает то что нужно и не делает того, что не нужно. Если этот код выполняет что-то нужное за приемлемое время, а с разнесеннием по 100500 коллекций простую операцию получения итератора превращает в танцы с бубном, то это плохо. Если же для каждого типа объекта нужен свой обработчик, то свалка это плохо. P.S. Да и свалка у ТС могла возникнуть по наследству. В этом случае совет - это плохо равнозначен совету игроку в тетрис - не туда надо было. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2016, 15:07 |
|
Java 8 - уже не совсем Java?
|
|||
---|---|---|---|
#18+
Сергей Арсеньев Этак мы дойдем до - нафиг нужно наследование? Для наследования есть полиморфизм, который проблему решает. Сергей Арсеньев Если у людей вся логика построена на вызове метода hashCode() и equals() Когда вся логика построена на hashCode() и equals(), то список у нас условно гомогенный. Когда человеку нужно писать if(o instanceof String), то список резко становиться гетерогенным. Потому что для нас по критерию String/не String уже как минимум два разных типа. Сергей Арсеньев Или вообще это коллекция со списком мониторов. Зачем им разные списки? Зачем монитору toLowerCase()? Сергей Арсеньев Да ТС может захотел на время засунуть туда логгер для строк - ему надо проверять строка не строка. Но основную логику перефигачивать ради такой задачи глупо, IMHO. Глупо потом писать if ... instanceof в каждом методе где используется эта коллекция. Сергей АрсеньевP.S. Да и свалка у ТС могла возникнуть по наследству. В этом случае совет - это плохо равнозначен совету игроку в тетрис - не туда надо было. :) И автор вместо того чтобы разгрести свалку переводит код на стримы. Да? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2016, 15:15 |
|
Java 8 - уже не совсем Java?
|
|||
---|---|---|---|
#18+
BlazkowiczСергей Арсеньев Или вообще это коллекция со списком мониторов. Зачем им разные списки? Зачем монитору toLowerCase()? ... И автор вместо того чтобы разгрести свалку переводит код на стримы. Да? Автору могли дать вспомогательную задачу. Ну там отследить что за хрень стала появляться? А для основной (мониторы) toLowerCase нафиг не нужна. Это одна ситуация. Если же toLowerCase нужна постоянно в основной логике - совсем другая. Вот и все что я хотел сказать. То что гомогенно для одного, может быть гетерогенно для другого. P.S. Хотя использовать String как монитор, например, уже само по себе можно считать моветоном. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2016, 15:37 |
|
Java 8 - уже не совсем Java?
|
|||
---|---|---|---|
#18+
Коллеги, хотелось бы пояснить необходимость Object[] и toLowerCase() и, по возможности, выслушать советы по улучшению. Вся задача вертится вокруг Infinispan в целом и Querying via the Java Hot Rod client в частности. Для работы с кэшем, размещенным на удаленном сервере, Infinispan Предлагает использовать собственный протокол Hot Rod , а для поиска собственный же Query DSL Примерно вот так это выглядит Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Т.е. Код: java 1.
ну, или Код: java 1.
Имеется собственная обертка - что-то типа QueryBuilderWrapper, которая строит query. Враппер в качестве параметра принимает некий SearchBean Код: java 1. 2. 3. 4.
Т.к. враппер строит query для любых полей и, соответственно, любых типов хранимых значений, требуется Object. А т.к. значений для поиска м.б. несколько, требуется Object[] А toLowerCase нужен для регистронезависимого поиска. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2016, 17:29 |
|
Java 8 - уже не совсем Java?
|
|||
---|---|---|---|
#18+
13-й ПилигримА toLowerCase нужен для регистронезависимого поиска. Спасибо за разъяснения, но они никак не объясняют надобности в гетерогенных значениях для поиска. field у вас один. Значит все values должны соответствовать его типу. Так ведь? Значит там либо все String, либо все Integer, либо все значения другого одинакового типа. Поэтому вполне можно, например, через method overload конструировать SearchBean для String не так как для других типов (с нормализацией регистра). Из каких данных вы этот SearchBean собираете? Почему там не String[], например? Как у вас в values может попасть одновременно String и другой тип? Ну, и безотносительно проблемы, нормализация параметров поиска требует ведь и нормализации данных. То есть к регистронезависимому поиску такое решение не особо относится. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2016, 17:51 |
|
Java 8 - уже не совсем Java?
|
|||
---|---|---|---|
#18+
BlazkowiczСпасибо за разъяснения, но они никак не объясняют надобности в гетерогенных значениях для поиска. field у вас один. Значит все values должны соответствовать его типу. Так ведь? Значит там либо все String, либо все Integer, либо все значения другого одинакового типа. Да, верно - для одного филда значения могут быть только одного типа. BlazkowiczПоэтому вполне можно, например, через method overload конструировать SearchBean для String не так как для других типов (с нормализацией регистра). Да, этот вариант выглядит предпочтительным. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9.
BlazkowiczКак у вас в values может попасть одновременно String и другой тип? Правильно, не может. BlazkowiczНу, и безотносительно проблемы, нормализация параметров поиска требует ведь и нормализации данных. То есть к регистронезависимому поиску такое решение не особо относится. Конечно, данные в кэше тоже нормализованы. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2016, 18:14 |
|
Java 8 - уже не совсем Java?
|
|||
---|---|---|---|
#18+
13-й ПилигримДа, этот вариант выглядит предпочтительным. Скажем решительное "нет" копипасте и "да" самодокументированому коду. Код: java 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2016, 18:26 |
|
Java 8 - уже не совсем Java?
|
|||
---|---|---|---|
#18+
Blazkowicz Код: java 1. 2. 3.
А может и так. Код: java 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2016, 18:50 |
|
Java 8 - уже не совсем Java?
|
|||
---|---|---|---|
#18+
BlazkowiczСкажем решительное "нет" копипасте и "да" самодокументированому коду. Главное, чтоб это самодокументация дошла до разработчиков того сервиса, которые будут дергать бин. А то веди их будет ждать сюрприз, когда они пришлют Object[] содержащий строки и они не преобразуются к маленьким буквам. Но скорее всего это сам ТС и он в курсе. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2016, 15:10 |
|
Java 8 - уже не совсем Java?
|
|||
---|---|---|---|
#18+
Сергей Арсеньев, Это не сервис же. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2016, 15:15 |
|
Java 8 - уже не совсем Java?
|
|||
---|---|---|---|
#18+
По сабжу. Прошло уже немало (сколько?) лет с момента публикации пары статей некого Африканца под названием Околожабство. http://izm.izvm.net/zhaba/java-a.htm http://izm.izvm.net/zhaba/java-b.htm Я не предлагаю сейчас обсуждать его личность или сами статьи а просто хочу посмотреть и добавить что изменилось с тех пор и что уже не есть TRUE. Поскольку в чтениях статей и - медленный покемон - то можете писать свои каменты раньше меня. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2016, 16:14 |
|
|
start [/forum/topic.php?fid=59&msg=39198035&tid=2120495]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 276ms |
total: | 431ms |
0 / 0 |