Синтаксис Java с большим или меньшим чем: <> являются ли они специфичными для класса?
Я занимаюсь учебником Android и сталкивался с классом со следующим:
public class ImageAndTextAdapter extends ArrayAdapter<String> {
Является ли <String>
формой наследования по типу? Или это какой-то другой синтаксис Java, о котором я должен знать?
Класс:
android.widget.ArrayAdapter<String>
Ответы
Ответ 1
Это называется generics. Класс внутри <
и >
является параметром типа.
Это проще всего объяснить на примере:
An ArrayList
может хранить элементы. Если вы укажете такой параметр типа: ArrayList<String>
, то в этом списке массивов будут храниться только элементы типа String
(другими словами, он будет хранить только String
)!
Аналогично, ArrayAdapter
также "параметризуется" типом. ArrayAdapter
, вероятно, содержит значение, и это значение будет иметь тип, указанный между <
и >
, который в вашем случае равен String
.
Полезные ссылки:
Ответ 2
Это Java Generics.
Это похоже на С++-шаблоны.
В нем говорится, что ArrayAdapter поддерживается массивом строк. Это в основном полезно, поэтому, когда вы получаете/добавляете объекты, они безопасны для ввода текста и вам не нужно выполнять кастинг.
Ответ 3
Это часть Generics, которая была представлена в Java1.5. Иногда вы не знаете, какой тип объекта вы можете передать или получить, чтобы вы могли передать общий тип объекта "?"
. В этом конкретном случае вы передаете объект ArrayAdapter, который содержит объекты String. вы можете прочитать больше http://en.wikipedia.org/wiki/Generics_in_Java
Ответ 4
Это общий класс Java.
http://download.oracle.com/javase/tutorial/java/generics/index.html