Size: a a a

2020 May 26

AB

Alexey Bodyak in learn.java
компилятор проверяет это, чтобы не было проблем как в груви :) там ты можешь спокойно так написать, компилятор это скушает,а в рантайме ты упадешь, будет неприятно
источник

SK

Sergei Kutcher in learn.java
Ок, разобрался. Свойство работает, конфига не та подгружалась
источник

AB

Alexey Bodyak in learn.java
на то в жаве и есть статическая типизация
источник

D

Dibro in learn.java
Alexey Bodyak
У тебя список, если бы компилятор не делал проверок, то в рантайме ты бы начал сортировать список и упал бы :) потому что в списке лежал Object
хотя хороший пример, да сигнатуры те же
источник

AB

Alexey Bodyak in learn.java
теперь понятнее?)
источник

D

Dibro in learn.java
понятнее почему так сделано, да. но я всё равно убеждён что в моём примере там спокойно могли быть инты
источник

AB

Alexey Bodyak in learn.java
но могли быть и Object
источник

D

Dibro in learn.java
спасибо
источник

AB

Alexey Bodyak in learn.java
не за что)
источник

D

Dibro in learn.java
Alexey Bodyak
но могли быть и Object
не, Object'а быть не могло потому что компаратор a у которого мы вызываем .thenComparing принимает только Integer, который потом передаст этой злосчастной лямбде

а вот список этой же лямбде передаёт свои объекты, но чтение из него всегда отдаёт Object'ы:
https://stackoverflow.com/a/4343547/4012848

потому и компаратор должен уметь их сравнивать
источник

AB

Alexey Bodyak in learn.java
Мы же говорили о том, если бы компилятор не проверял тип, то мог быть обжект и ты бы узнал об этом в рантайме
источник

AB

Alexey Bodyak in learn.java
А так, да, ты ограничил компаратор только сравнением интов, при этом сигнатура умеет принимать Object
источник

D

Dibro in learn.java
Alexey Bodyak
Мы же говорили о том, если бы компилятор не проверял тип, то мог быть обжект и ты бы узнал об этом в рантайме
но он же проверяет, так как тогда объект то залетит
источник

D

Dibro in learn.java
как раз из-за PECS'а мы же и не можем передать туда объект, хотя в списке он может быть изначально
источник

AB

Alexey Bodyak in learn.java
ну и у тебя будет ошибка компиляции, т.к. ты компаратор научил только сравнивать инты
источник

D

Dibro in learn.java
ну компиляции же, не рантайма
источник

AB

Alexey Bodyak in learn.java
Dibro
привет, подскажите, то что я в этом коде не могу сравнивать x и y во второй лямбде - это недочёт компилятора или справедливая защита?
Comparator<? super Integer> a = (x, y) -> Integer.compare(x, y);
Comparator<? super Integer> b = a.thenComparing((x, y) -> Integer.compare(x, y));
так, твой вопрос был про защиту) я тебе объяснил, что да, это защита и объяснил что было бы, если бы ее не было
источник

D

Dibro in learn.java
Alexey Bodyak
так, твой вопрос был про защиту) я тебе объяснил, что да, это защита и объяснил что было бы, если бы ее не было
ну так не может туда объект попасть, значит мой пример прекрасно бы работал, если бы не защита компилятора, которая для моего примера ничего не делает
источник

D

Dibro in learn.java
не может, иначе будет ошибка компиляции
источник

D

Dibro in learn.java
вот так могу сказать
источник