Re[3]: Вопрос по коллекциям
От: Lucker Беларусь http://lucker.intervelopers.com/
Дата: 18.02.06 18:21
Оценка: +1 :))
Здравствуйте, Trean, Вы писали:

T>Ну, я не Lucker, но так понимаю что это "best-effort practice", final объявляет константное значение, в данном случае ссылку, и

T>может быть примененна какая-то оптимизация. Но точных данных на этот счет нет. В мустанге обешали более агрессивное использование
T>регистров для хранения переменных, может какой-то выигрыш и будет. Кстати бета Мустанга вышла на прошлой неделе.

Ну, это как на стройке говорить б#я, нафамилия-китайской-спортсменки и так далее — можно и без этого, но как-то быстро привыкаешь, что потом без этого уже и не можешь. Насчет оптимизаций — не уверен, но семантическую нагрузка есть. Кстати, замечено, что как и на стройке, через некоторое время активного использования читать код без final как-то не комфортно.
#333355130
Вопрос по коллекциям
От: AutumnLeaf Великобритания  
Дата: 18.02.06 12:25
Оценка:
Недавно начал изучать Java и появился следующий вопрос:
Вот есть вектор directory, в котором я храню объекты типа Record. В типе Record есть метод getName(), который мне надо бы вызывать для элементов вектора.
Но конструкции вида: directory.elementAt(i).getName() не проходят, поскольку directory.elementAt(i) возвращает объект типа Object.
Как с этим быть?
Re: Вопрос по коллекциям
От: Lucker Беларусь http://lucker.intervelopers.com/
Дата: 18.02.06 12:39
Оценка:
Здравствуйте, AutumnLeaf, Вы писали:

AL>Недавно начал изучать Java и появился следующий вопрос:

AL>Вот есть вектор directory, в котором я храню объекты типа Record. В типе Record есть метод getName(), который мне надо бы вызывать для элементов вектора.
AL>Но конструкции вида: directory.elementAt(i).getName() не проходят, поскольку directory.elementAt(i) возвращает объект типа Object.
AL>Как с этим быть?


или привести к типу: ((Record)directory.elementAt(i)).getName()
или если у тебя 1.5 и выше — использовать генерики:

что-то вроде
final List<Record> directory = new List<Record>();
directory.add(new Record("rec1"));
directory.add(new Record("rec2"))
directory.add(new Record("rec3"))
...
direcotry.get(i).getName();
#333355130
Re: Вопрос по коллекциям
От: BuHHunyx Беларусь  
Дата: 18.02.06 12:40
Оценка:
Здравствуйте, AutumnLeaf, Вы писали:

AL>Недавно начал изучать Java и появился следующий вопрос:

AL>Вот есть вектор directory, в котором я храню объекты типа Record. В типе Record есть метод getName(), который мне надо бы вызывать для элементов вектора.
AL>Но конструкции вида: directory.elementAt(i).getName() не проходят, поскольку directory.elementAt(i) возвращает объект типа Object.
AL>Как с этим быть?

((Record)directory.elementAt(i)).getName()
... << RSDN@Home 1.1.4 stable rev. 510>>
Re: Вопрос по коллекциям
От: AutumnLeaf Великобритания  
Дата: 18.02.06 13:04
Оценка:
Спасибо, это сработало.
А какой их вариантов предпочтительнее, с генериками?
И какую цель преследует "final"?
Re[2]: Вопрос по коллекциям
От: Trean Беларусь http://axamit.com/
Дата: 18.02.06 18:11
Оценка:
Здравствуйте, AutumnLeaf, Вы писали:

AL>Спасибо, это сработало.

AL>А какой их вариантов предпочтительнее, с генериками?
AL>И какую цель преследует "final"?

Ну, я не Lucker, но так понимаю что это "best-effort practice", final объявляет константное значение, в данном случае ссылку, и
может быть примененна какая-то оптимизация. Но точных данных на этот счет нет. В мустанге обешали более агрессивное использование
регистров для хранения переменных, может какой-то выигрыш и будет. Кстати бета Мустанга вышла на прошлой неделе.
Re[4]: Вопрос по коллекциям
От: Trean Беларусь http://axamit.com/
Дата: 18.02.06 18:35
Оценка:
Здравствуйте, Lucker, Вы писали:

L>Здравствуйте, Trean, Вы писали:


T>>Ну, я не Lucker, но так понимаю что это "best-effort practice", final объявляет константное значение, в данном случае ссылку, и

T>>может быть примененна какая-то оптимизация. Но точных данных на этот счет нет. В мустанге обешали более агрессивное использование
T>>регистров для хранения переменных, может какой-то выигрыш и будет. Кстати бета Мустанга вышла на прошлой неделе.

L>Ну, это как на стройке говорить б#я, нафамилия-китайской-спортсменки и так далее — можно и без этого, но как-то быстро привыкаешь, что потом без этого уже и не можешь. Насчет оптимизаций — не уверен, но семантическую нагрузка есть. Кстати, замечено, что как и на стройке, через некоторое время активного использования читать код без final как-то не комфортно.




Я, кстати, так тоже пишу, во-первых: раз переменная не должна меняться а блоке кода, есть смысл объявить ее константой. Во-вторых, теоретически выигрыш может быть в таком случае:

for(int i = 0; i < list.size(); i++) {
  ...
}

final int n = list.size();
for(int i = 0; i < n; i++) {
  ...
}


Если в теле цикла список не модифицируется, то есть смысл сохранить значение длины, она может быть загружена в регистр только один раз, и вызывать size() каждый раз не потребуется. Возможен + эффект и в многопоточных приложениях, константы (как и все immutable objects) можно шарить между потоками безопасно и не требуется их копировать, чтобы измежать модификации другим потоком (подробнее было в Java Memory Model Spec).
Я опять же испытаний не проводил, и редко охочусь за наносекундами, но всегда стараюсь дать компилятору как можно больше семантической информации.
Re[2]: Вопрос по коллекциям
От: slskor  
Дата: 19.02.06 05:57
Оценка:
Здравствуйте, AutumnLeaf, Вы писали:

AL>А какой их вариантов предпочтительнее, с генериками?


Генерики, теоретически, позволяют избавиться от ошибок в преобразовании типов и ClassCastException в ходе выполнения программы. То есть использование генериков делает программу чуть-чуть надежнее.
Re[3]: Вопрос по коллекциям
От: igna Россия  
Дата: 19.02.06 07:05
Оценка:
Здравствуйте, slskor, Вы писали:

S>Генерики, теоретически, позволяют избавиться от ошибок в преобразовании типов и ClassCastException в ходе выполнения программы. То есть использование генериков делает программу чуть-чуть надежнее.


Может когда-нибудь использование генериков будет делать программу быстрее?
Re[4]: Вопрос по коллекциям
От: Blazkowicz Россия  
Дата: 20.02.06 11:22
Оценка:
Здравствуйте, igna, Вы писали:

I>Может когда-нибудь использование генериков будет делать программу быстрее?


Возможно, если их реализация будет такая же как в .NET, но сильно в этом сомневаюсь.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.