@jvmchat

Страница 1390 из 2890
Vladislav
21.04.2017
16:29:07
спс

Victor
22.04.2017
09:00:40
Кто подскажет, что изменилось в Java 8, что этот код стал компилироваться https://ideone.com/L24yl5 ? На ранних версиях нельзя было сделать throw throwable, компилятор говорил, что в методе run нет throws, предлагалось обернуть всё в try/catch. В Java 8 это теперь компилируется.

Adam
22.04.2017
09:02:37
ну по идее должно компилиться

Google
Adam
22.04.2017
09:02:56
он видит что это unchecked exception и его можно спокойно пробросить дальше

Victor
22.04.2017
09:04:49
При target 1.6 пишет "Error: unreported exception java.lang.Throwable; must be caught or declared to be thrown"

Nikolay
22.04.2017
09:05:35
А с 1.5 не пробовал?

Adam
22.04.2017
09:06:00
https://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.18

попробуй такую штуку погуглить для j6

Adam
22.04.2017
09:06:18
может там в спецификации были различия

Andrey
22.04.2017
09:07:18
?
Исправил.

Adam
22.04.2017
09:07:34
ты не понял что я написал

компилятор видит что вызывается метод у Runnable который не объявляет checked исключения, поэтому он делает вывод что Throwable который прилетит это какой то рантайм

либо еррор и тут уже пофиг

Google
Victor
22.04.2017
09:10:03
Sergey
22.04.2017
09:11:53
как вы в спринге боритесь с одинаковыми именами в разных пакетах для компонентов? ну скажем есть @Component package1.Client @Component package2.Client они оба будут зареганы как "client" и будет конфликт. можно указывать имя компонента, но как-то не айс

Sergey
22.04.2017
09:13:20
Почему не айс?
выглядит стремно @Component("package2Client")

Nick
22.04.2017
09:14:03
а зачем ты его именуешь? инжект по интерфейсу нельзя делать?

или у них интерфейс одинаковый?

Sergey
22.04.2017
09:14:32
разный интерфейс, разные компоненты, но спрингу не нравится что у них имя одинаковое

Ruslan
22.04.2017
09:14:38
выглядит стремно @Component("package2Client")
Ну так не так надо называть

Sergey
22.04.2017
09:14:40
он же их всех регает

Ruslan
22.04.2017
09:14:50
У них же есть какаято цель

И если они имеют разную имплементацию

Значит она разная

Вот тебе и название появляется

Sergey
22.04.2017
09:15:34
ок, допустим один пакет у нас twitter, другой facebook. оба имеют классы Client

facebook.FacebookClient как-то лишнее

нахрена тогда пакеты вообще

Ruslan
22.04.2017
09:16:08
"TwitterCliet" "FacebookClient"

Очевидно

Sergey
22.04.2017
09:16:30
они и так в нужных пакетах уже лежат. зачем дополнительно задавать префикс?

Google
Nick
22.04.2017
09:16:40
ты в один класс два клиента инжектишь?)

Sergey
22.04.2017
09:16:49
не

Ruslan
22.04.2017
09:16:54
ты в один класс два клиента инжектишь?)
Вопрос как спрингу сказать какой выбрать

Nick
22.04.2017
09:16:59
ну тогда не должно быть вопросов

Nick
22.04.2017
09:17:05
у них типы разные

Ruslan
22.04.2017
09:17:11
Ну тогда непончтно

Nick
22.04.2017
09:17:15
тебе не надо их именовать даж

Sergey
22.04.2017
09:17:17
вопрос в том что спринг не может их зарегать в контейнере из-за того что у них short имена одинаковые получаются

Ruslan
22.04.2017
09:17:19
Зачем тебе бин называть клиент

Это абсолютно ничего не говорит о его цели

Может лучше положить их в один пэкедж типа clients и называть подобающе

Ruslan
22.04.2017
09:18:12
Тебе в данном слцчае просто имя класса никак не говорит о цели

Sergey
22.04.2017
09:18:13
бин клиент из пакета твиттер вполне очевидно чей это клиент

Ruslan
22.04.2017
09:18:29
Мы сейчас говорим уже о бинах

Sergey
22.04.2017
09:19:11
этот бин нигде кроме как в этом пакете не будет использоваться

Ruslan
22.04.2017
09:19:35
Ну спрингу то пофиг в каком оно там пакете

Бины ты на контекст поднимаются

Просто когда читаешь код private final Client client; Както не очень понятно что это? А если тебе в работе с твиттером понадобилась аутентификация через фейсбук? Мне надо смотреть в импорты чтоли чтобы понять что за клиент и что он делает? Помоему куда понятнее private final Client twitterClient;

Nick
22.04.2017
09:22:10
@Enleur че эт у тебя short name юзается в качестве id

Google
Ruslan
22.04.2017
09:22:49
Ну какбы если ты сделаешь так то твоя проблема уйдет

Потому что если у тебя две имплементации клиента под назыанием teitterClient то ты чтото делаешь не так А просто клиентов в одном проекте десятки могут быть и как ты их различать хочешь

Admin
ERROR: S client not available

Sergey
22.04.2017
09:25:18
Потому что если у тебя две имплементации клиента под назыанием teitterClient то ты чтото делаешь не так А просто клиентов в одном проекте десятки могут быть и как ты их различать хочешь
повторяю. эти клиенты приватные для пакета. они нигде кроме него не используются. они не могут случайно попасть на уровень выше или вообще использоваться несколько клиентов одновременно

http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/AnnotationBeanNameGenerator.html

If the annotation's value doesn't indicate a bean name, an appropriate name will be built based on the short name of the class (with the first letter lower-cased). For example: com.xyz.FooServiceImpl -> fooServiceImpl

Ruslan
22.04.2017
09:26:51
Это то понятно

Nick
22.04.2017
09:27:40
тебе какая разница то как назвать то его?

Sergey
22.04.2017
09:28:06
бин или сам класс?

Nick
22.04.2017
09:28:28
бин

Sergey
22.04.2017
09:28:50
ну хз, напрягает как-то эта строка)

Nick
22.04.2017
09:28:54
ааа

ну тогда все понятно

Sergey
22.04.2017
09:29:12
неужели на проекте не может быть 2 одинаковых имени класса

Nick
22.04.2017
09:29:15
напиши свои BeanNameGenerator

Sergey
22.04.2017
09:29:51
да вот думал, но хз на сколько это ок

Google
Sergey
22.04.2017
09:30:00
да и не везде это нужно

думал может сделать доп аннотацию и тогда она в имя компонента будет тянуть еще имя пакета в котором он лежит

Митко Соловец?
22.04.2017
09:34:51
@Component("FacebookClient") @Component("TwitterClient")

Sergey
22.04.2017
09:35:22
вот сейчас так да

Митко Соловец?
22.04.2017
09:35:40
если не указывать бин нейм, он по дефолту берем имя класса в камелкэйсе

вот и конфликт возникает

Sergey
22.04.2017
09:35:57
вот в том то и проблема

у меня 10 разных провайдеров и у всех есть похожие классы внутри Client, RequestBuilder и тд. приходится каждому дописывать имя бина что бы не было конфликтов

неудобно пздц

Митко Соловец?
22.04.2017
09:36:42
указывай бин нейм и квалифиер - это правильный совет, если знать, что спринг ищет бины по имени

Sergey
22.04.2017
09:38:17
создавай все через нью
они не конечные. там из контейнера пропихиваются еще зависимости

разве что сделать модуль и через java config собирать)

Ivan
22.04.2017
09:38:34
ну и в Java вообще не советуют одинаковые названия классов юзать

Страница 1390 из 2890