- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
public class SimpleTest {
class A {}
class B extends A {};
class C extends B {};
public void doIt() {
A a = new A();
B b = new B();
C c = new C();
List<B> lst = new ArrayList<B>();
lst.add(a);
lst.add(b);
lst.add(c);
a = lst.get(0);
b = lst.get(0);
c = lst.get(0);
List<? extends B> lstExtends = lst;
lstExtends.add(a);
lstExtends.add(b);
lstExtends.add(c);
a = lstExtends.get(0);
b = lstExtends.get(0);
c = lstExtends.get(0);
List<? super B> lstSuper = lst;
lstSuper.add(a);
lstSuper.add(b);
lstSuper.add(c);
a = lstSuper.get(0);
b = lstSuper.get(0);
c = lstSuper.get(0);
}
}
byss 17.10.2013 00:02 # 0
pingw33n 17.10.2013 00:24 # 0
А тебе зачем?
Dummy00001 17.10.2013 01:51 # +9
Я наконец догадался! Ответ: строчки с ошибками!
kegdan 17.10.2013 03:31 # 0
govnomonad 17.10.2013 04:48 # −1
крестоблядство уже до жабы добралось
bormand 17.10.2013 05:45 # +1
Пиши тест сам. А то примут тебя на работу, а ты джаву не знаешь :) Неприятно будет и тебе и работодателю.
> Какие строки вызовут ошибку компиляции?
Скомпилируй, узнаешь ;)
P.S. ГК - не твоя личная армия.
P.P.S. Держи отличный FAQ от Анжелики Лагнер: http://www.angelikalanger.com/GenericsFAQ/JavaGenericsFAQ.html Там есть нужная тебе инфа.
huitka 17.10.2013 08:24 # −5
bormand 17.10.2013 08:45 # +8
Да хоть хуём назови... По крайней мере я не превращаю говнокодик в филиал ответов@майл.ру или стековерфлоу, в отличие от некоторых...
В чем суть вопроса то?
Хотел узнать какие строки вызовут ошибку? - Скомпилируй и увидишь.
Хотел узнать почему именно эти? - Кури ссылку, которую я тебе кинул.
Компилятор говно, и работает неправильно? - Напиши нам об этом, это интересно.
Решил проверить наши знания? - вали нахрен, это не тот ресурс.
Vasiliy 17.10.2013 12:38 # +3
Это "Пять".
spivti 17.10.2013 13:24 # −3
>Какие строки вызовут ошибку компиляции?
забавный вапрос?
>Ты что, совсем дурачок?
Еще более забавный вапрос?
Выложи лучше на хеш-коде или стекОверфлоф.
bormand 17.10.2013 13:35 # 0
> забавный вапрос?
> Еще более забавный вапрос?
Лопата.
spivti 17.10.2013 13:41 # −1
интересно откуда автор выдрал этот пример.
huitka 17.10.2013 08:39 # 0
bormand 17.10.2013 09:10 # +1
А ответ, имхо, вполне очевидный...
В List<? extends B> может лежать что-то из List<C> или List<B> (а может и вообще List<D> если D extends B). Поэтому если мы в нее что-то вставим, то может случиться, что мы в List<C> засунем B. Что совсем не айс. Поэтому тут не пашут add'ы.
В случае с List<? super B> мы имеем либо List<A> либо List<B>. Поскольку в List<A> могут оказаться A, мы не можем вынуть элемент как B. Поэтому тут не пашут get'ы.
-A- 24.08.2021 20:37 # 0