Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / [Generics] Fine Print, массивы / 2 сообщений из 2, страница 1 из 1
19.06.2007, 11:43:08
    #34604145
ddocker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Generics] Fine Print, массивы
По поводу Generics, The Fine Print -> Arrays

Вкратце, получается, что из-за этого финта с массивами, когда массиву супертипов можно присваивать массив подтипов, а-ля:
Код: plaintext
1.
2.
3.
4.
5.
...
Sub[] sa =  new  Sub[ 2 ];
Base[] ba = sa;
ba[ 0 ] =  new  Base(); // - ArrayStoreException in runtime
...
- Нельзя создавать массив типизированного класса.

Одного только не пойму - зачем они делают:
Код: plaintext
1.
2.
3.
4.
....
Object o = lsa;
Object[] oa = (Object[]) o;
....

В 1.5.0_09 проверял, компилится и без этого:
Код: plaintext
1.
2.
3.
4.
5.
6.
List<String>[] lsa = (List<String>[])  new  List<?>[ 10 ]; // Unchecked warning. This is unsafe!
Object[] oa = lsa;
List<Integer> li =  new  ArrayList<Integer>();
li.add( new  Integer( 3 ));
oa[ 1 ] = li; // Correct.
String s = lsa[ 1 ].get( 0 ); // Run time error, but we were warned.
?
...
Рейтинг: 0 / 0
20.06.2007, 13:02:58
    #34607493
ddocker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Generics] Fine Print, массивы
up
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / [Generics] Fine Print, массивы / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]