- 1
List selection = new ArrayList((s != null) ? s : new ArrayList());
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+84
List selection = new ArrayList((s != null) ? s : new ArrayList());
Больше мусора для бога сборщика мусора!
guest 05.12.2014 17:26 # 0
someone 05.12.2014 17:56 # 0
guest 05.12.2014 18:05 # −1
Анонимус 05.12.2014 22:47 # +1
И где генерики?
guest 05.12.2014 23:30 # +2
someone 06.12.2014 10:20 # 0
Это старый код, написанный ещё до Java 5. Я как раз разгребала завалы и добавляла дженерики. Теперь там так:
3.14159265 06.12.2014 18:32 # +1
Да. Кстати вы где-то спрашивали про претензии к тернарникам.
Так вот, в тернарниках автовывод женерика на этом методе не сработает.
Придется написать:
Collections<SimulationElement>.emptyList ()
dnalchemist 12.12.2014 14:56 # 0
= s != null ? new ArrayList( s ) : new ArrayList();
dnalchemist 12.12.2014 15:05 # 0
Collections.<SimulationElement>emptyList ();
наверное у меня джава неправильная
3.14159265 12.12.2014 15:15 # +1
Что работает?
http://ideone.com/kwMRmw vs http://ideone.com/zQWly0
В 8-ой пытались чинить генерики, но немного сломали обратную совместимость.
someone 12.12.2014 15:22 # 0
3.14159265 12.12.2014 15:24 # 0
Пруфы?
3.14159265 12.12.2014 15:48 # 0
Про то что лет 5 назад в javaс6 был баг c женериками, которого не было в эклипсе, мне известно.
Но это было давно и неправда, поскольку его починили хер знает когда.
Глагол "работает" же в настоящем времени.
roman-kashitsyn 12.12.2014 15:25 # +2
Ну офигеть. Прям вижуалстудия жабомира.
3.14159265 12.12.2014 15:26 # 0
Во! Только об этом писал развернуто.
Ну и кагбе получается идиотская ситуация, есть некое надмножество компилятора, которое компилирует то что не хочет собирать стандартный javac.
В нём можно сделать всякие "полезные" РАСШИРЕНИЯ: добавить там сишный препроцессор, убрать ошибки на checked исключениях, сделать перегрузку операторов. И назвать это джавой.
Естественно нашу более "умную" джаву не будет собирать javac. То есть собрать код будет возможно только на ecj.
И тут у меня возникает де-жа-вю.
roman-kashitsyn 12.12.2014 15:32 # 0
GHC ?
3.14159265 12.12.2014 15:34 # 0
Улучшениями скучной явы когда-то занималась майкрософт, пока Sun их тово.
Вижуалстудия - очень уместная отсылка.
PS> В свете того что GHC под крылом Microsoft Research...
roman-kashitsyn 12.12.2014 15:39 # 0
Да, зелёная шутка.
В GHC расширения языка нужно явными директивами включать (т.е. тупо положить на спеку не получится), и в реальности можно запилить поддержку аналогичных директив в других компиляторах.
guest 12.12.2014 22:13 # 0
dnalchemist 21.04.2015 09:29 # 0
Вот такой код выдаст 5.0:
Object value = true ? new Integer(5) : new Double(6);
А вот такой уже 5:
Object value = true ? (Object)new Integer(5) : (Object)new Double(6);
Причем это описано в спецификации
http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html
miheich 25.08.2021 06:50 # 0