2009-12-10 3 views
1
  1. Что делать T и S означает?
  2. public void main(String... abc); что означает ...? Является ли ... названным общим?

ответ

10
  1. Это есть parameterized types. Вы можете использовать любой идентификатор здесь для представления определенного типа объекта.
  2. Это varargs. Вы можете передать отдельную строку или несколько строк, или массив строк в.
1
  1. Пожалуйста, прочтите the documentation. Вкратце, это параметры типа, так что общие типы и методы могут знать, к каким типам объектов они действуют.
  2. Это указывает, что метод может принимать переменное количество аргументов. См. varargs. В основном это сахара вокруг массива.
3

T и S - общие классы. Они могут быть любым типом класса, который вы хотите. Например, Map<K, V> использует класс K для класса ключей и V для класса значений.

Map<Integer, String> map = new HashMap<Integer, String> 

Что касается String..., это означает, что любое количество параметров String.

+0

1.может ли я использовать любой другой алфавит, A, B, C, Z? а не T, S, K, V? 2. Карта (K, V) такая же, как Карта (S, T)? может использовать любой алфавит? – cometta

+2

Вы можете использовать любой идентификатор, который вы хотите, если он не сталкивается с существующими классами в пути к классам. Обычное условное обозначение кодирования действительно является единственным символом с верхним регистром (потому что не является нормальным иметь класс с только одним символом в качестве имени). – BalusC

0

дополняющий: String... почти такой же, как String[].
На стороне метода это то же самое,
на стороне вызова the're - это различие: компилятор создает массив из параметров.

void method(String... args) { 
    // args is an array: getClass() returns [java.lang.String 
    if (args.length > 0) { 
     System.out.println(args[0]); 
... 
    method();    // same as method(new String[0]); 
    method("1", "2", "3"); // same as method(new String[] {"1", "2", "3"}); 
1

Документация Sun Java Generics может быть немного трудно понять, поэтому я попытался написать более простой учебник по Java Generics. Вы можете найти его здесь:

http://tutorials.jenkov.com/java-generics/index.html

0

T и S означает, что сам класс не знает, какие классы они есть, но вещи, которые используют класс делать.

Возьмите java.util.List. Класс списка ничего не знает о T не знает и не делает никаких предположений о Т. То, что использование класс List:

List<MyBean> l = new ArrayList<MyBean>(); 

Знайте, что в нем.