объявление класса Java <T> - PullRequest
       50

объявление класса Java <T>

4 голосов
/ 03 сентября 2010

Я знаком с простым объявлением класса public class test, но я не понимаю public class test<T>.

Ответы [ 4 ]

11 голосов
/ 03 сентября 2010

относится к универсальному типу. Универсальные типы введены в Java, чтобы предоставить вам время компиляции, и это важно из-за стирания типов, безопасности типов. Это особенно полезно в коллекциях, потому что освобождает вас от ручного литья.

Это хорошая идея, чтобы узнать больше о дженериках, особенно документация по теме Анжелики Лангер очень хороша: http://www.angelikalanger.com/GenericsFAQ/JavaGenericsFAQ.html

5 голосов
/ 03 сентября 2010

Я предполагаю, что HTML съел ваш (вам нужно написать & lt; T & gt; чтобы отобразить его)

T - параметр типа или «универсальный» параметр. Скажем, у вас есть список. Тогда для структуры списка неважно, что именно вы там храните. Это могут быть строки, даты, яблоки, SpaceShips, это не имеет значения для операций со списками, таких как добавление, удаление и т. Д. Таким образом, вы оставляете это абстрактным при определении класса («это абстрактный список»), но указываете его при создании экземпляра («это список строк»)

//in Java, C# etc would be similar

//definition
public class List<T> {
   public void add(T t) { ... }  
   public void remove(T t) { ... }  
   public T get(int index) { ... } 
}

//usage
List<String> list = new List<String>(); 
list.add("x"); //now it's clear that every T needs to be a String
...  
3 голосов
/ 03 сентября 2010

Вы, вероятно, ссылаетесь на Java Generics:

http://www.oracle.com/technetwork/java/javase/generics-tutorial-159168.pdf

1 голос
/ 03 сентября 2010

Это параметрический полиморфизм , еще одна важная форма полиморфизма, отличная от подтипирования.

На земле Java они называют это Обобщения (см. Также Урок: Обобщения ).

...