<T>!!

Ответить
Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

<T>!!

Сообщение Foenix » 12 ноя 2012, 03:46

Пожалуйста, подскажите! поиск по этому слову не работает, а мне желательно знать.. что это за тип такой Т?
Допустим я использую класс, где некая переменная объявлена как <T>. Чувствую, что я могу ее как-то переопределить под свои нужды, например, создать структуру-класс, запихнув туда то, что мне нужно..
подскажите, как это сделать, пожалуйста!
и еще, может быть кто-то знает ссылки, или хотя бы по каким словам искать информацию, ни гугл, ни яндекс не хотят искать эти три символа вместе..
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: <T>!!

Сообщение rezak90 » 12 ноя 2012, 09:03

:D :D :D
T - Templates, это обобщённый тип. Можете почитать обобщённые типы по С++, в яве они отличаются но не на много. В сети может и найдёте что то стоящее, но лучше всего это "Java 2. Библиотека профессионала, том 1. Основы. 8-е издание Кей С. Хорстманн, Гари Корнелл", в электронном может и есть, а может и нету.
R.id.team
Политика на форуме запрещена

AndreyI
Сообщения: 372
Зарегистрирован: 14 май 2012, 16:18

Re: <T>!!

Сообщение AndreyI » 12 ноя 2012, 11:42

Повода для иронии не вижу, с учетом того, что сайт и форум ориентирован на начинающих.
В общих словах эти типы разработаны в основном для избежания ошибок, которые могут быть из-за неправильного приведения типов и были введены в JAVA только начиная с версии 1.5. С использованием генериков такие ошибки вычисляются уже на стадии компиляции.
Ранее обходились без них, к примеру при создании коллекций или массивов каждый его член просто считался типом Object. Если мы, скажем, создадим ArrayList со строками, а потом в каком-то методе попытаемся считать данные его элементов как Integer, то такая ошибка не будет определена на стадии компиляции, но мы получим исключение во время выполнения кода из-за невозможности приведения типа (cast exception). С применением обобщенных типов мы можем явно указать какой тип элементов используется (ArrayList <String>) и ошибки с неправильным приведением типов будут отлавливаться уже на стадии компиляции. Если у нас ArrayList со смешанными типапи, то мы всегда можем указать ArrayList<Object>, такая запись полностью идентична старой реализации ArrayList без генериков.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: <T>!!

Сообщение Foenix » 12 ноя 2012, 11:49

Так и какого типа в результате эта переменная,
как мне это использовать?
я почитаю, т.к. мало поняла из объяснений..
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

AndreyI
Сообщения: 372
Зарегистрирован: 14 май 2012, 16:18

Re: <T>!!

Сообщение AndreyI » 12 ноя 2012, 11:57

Какой тип вы запишете вместо T такой и будет использоваться.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: <T>!!

Сообщение Foenix » 12 ноя 2012, 12:02

т.е. я могу в метод, в котором один из параметров Т, передать фактически переменную любого созданного мною класса?
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

AndreyI
Сообщения: 372
Зарегистрирован: 14 май 2012, 16:18

Re: <T>!!

Сообщение AndreyI » 12 ноя 2012, 12:09

Конечно, в общем случае можно любые типы использовать в том числе и ваши собственные (класс объекта это и есть его тип другими словами).
В генериках JAVA есть механизм чтобы ограничивать используемые типы только определенными или являющимися наследниками определенных типов. Но если это не указано, то можно использовать любые типы.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: <T>!!

Сообщение Foenix » 12 ноя 2012, 12:27

БОльшое спасибо, сейчас попробую!
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Ответить