Синтаксис Java с больше / меньше чем: <> они специфичны для класса? - PullRequest
16 голосов
/ 19 мая 2011

Я делал учебник по Android и встретил класс со следующим:

public class ImageAndTextAdapter extends ArrayAdapter<String> {

Является ли <String> формой наследования по типу? Или это какой-то другой синтаксис Java, о котором я должен знать?

Класс:

android.widget.ArrayAdapter<String>

Ответы [ 4 ]

20 голосов
/ 19 мая 2011

Это называется generics . Класс в < и > является параметром типа .

Это проще всего объяснить на примере:

ArrayList может хранить предметы. Если вы укажете параметр типа, подобный следующему: ArrayList<String>, то в этом списке массивов будут храниться элементы только типа String (другими словами, он будет хранить только String s)!

Аналогично, ArrayAdapter также «параметризован» типом. ArrayAdapter, вероятно, содержит значение, и это значение будет иметь тип, указанный между < и >, который в вашем случае равен String.

Полезные ссылки:

4 голосов
/ 19 мая 2011

Это Java Generics .

Это как шаблоны C ++.

Это говорит о том, что ArrayAdapter поддерживается массивом Strings. Это в основном полезно, поэтому когда вы получаете / добавляете объекты, это безопасно для типов и вам не нужно выполнять какое-либо приведение.

3 голосов
/ 19 мая 2011

Это часть Generics, которая была представлена ​​в Java1.5. Иногда вы не знаете, какой тип объекта вы можете передать или получить, поэтому вы можете передать универсальный тип объекта "?". В этом конкретном случае вы передаете объект ArrayAdapter, который содержит объекты String. Вы можете прочитать больше http://en.wikipedia.org/wiki/Generics_in_Java

1 голос
/ 19 мая 2011

Это универсальный класс Java.

http://download.oracle.com/javase/tutorial/java/generics/index.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...