Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Параметризованный (generic) метод определяет базовый набор операций, которые будут применяться к разным типам данных, получаемых методом в
качестве параметра, и может быть записан, например, в виде:
<T extends Тип> returnType methodName(T arg) {}
<T> returnType methodName(T arg) {}
Описание типа должно находиться перед возвращаемым типом. Запись
первого вида означает, что в метод можно передавать объекты, типы которых
являются подклассами класса, указанного после extends. Второй способ
объявления метода никаких ограничений на передаваемый тип не ставит.
Generic-методы могут находиться как в параметризованных классах, так и в
обычных. Параметр метода может не иметь никакого отношения к параметру
своего класса. Метасимволы применимы и к generic-методам.
/* пример # 13: параметризованный метод: GenericMethod.java */
public class GenericMethod {
public static <T extends Number> byte asByte(T num) {
long n = num.longValue();
if (n >= -128 && n <= 127) return (byte)n;
else return 0;
}
public static void main(String [] args) {
System.out.println(asByte(7));
System.out.println(asByte(new Float("7.f")));
// System.out.println(asByte(new Character('7'))); // ошибка компиляции
}
}
Объекты типа Integer (int будет в него упакован) и Float являются
подклассами абстрактного класса Number, поэтому компиляция проходит без
затруднений. Класс Character не обладает вышеуказанным свойством, и его
объект не может передаваться в метод asByte(T num).
42. Хранение и обработка объектов. Интерфейсы коллекции: Collection, List, Set, Map.
Дата публикования: 2015-02-03; Прочитано: 2127 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!