2013-11-09 3 views
0
T get(int i) { 
    if (i < 0 || i > n - 1) throw new IndexOutOfBoundsException(); 
    return a[i]; 
} 
T set(int i, T x) { 
    if (i < 0 || i > n - 1) throw new IndexOutOfBoundsException(); 
    T y = a[i]; 
    a[i] = x; 
    return y; 
} 

Я просматриваю некоторые примеры кодирования из моего учебника, но они никогда не упоминают, что такое T. Я не уверен, как искать об этом, так как я не знаю, что это называется или это цель. Мне было интересно, может ли кто-нибудь показать мне рецензию или некоторую информацию об этом. СпасибоЧто означает «T» в этом коде?

+3

Это типичный параметр типа - подумайте об этом как «некоторый тип, T.» См.: Http://docs.oracle.com/javase/tutorial/java/generics/ – yshavit

+0

Можем ли мы увидеть полное определение класса. Надеюсь, что T - это общий тип, а не имя класса ... – CodaFi

+0

Вы должны прочитать [this] (http://docs.oracle.com/javase/tutorial/java/generics/types.html) , – Maroun

ответ

1

T представляет собой тип объекта, используя generics.

Какой бы тип x не использовался в вызове set, метод set вернет тот же тип. В вызове get возвращаемый тип - T. Этот тип должен быть определен где-то в другом месте, возможно, в типе класса, где он может отображаться как <T>.

Так что, если это класс, который является своего рода коллекций (так как она имеет дело с индексами), он может быть определен как:

public class SomeCollection<T> { 

Тогда он может получить экземпляр, как:

SomeCollection<String> arr = new SomeCollection<String>(); 

В этом случае T будет String и тип возвращаемого из get и set методов, и тип параметра setx, все были бы String.

Если он получает экземпляр как:

SomeCollection<Integer> arr = new SomeCollection<Integer>(); 

затем T является Integer.

Возможно, вы оба в одном коде, не имея необходимости писать две (или более) разные версии SomeCollection.

Смежные вопросы