Microsoft Word кл программирование на Java 2020 Зорина docx



Pdf көрінісі
бет52/65
Дата17.10.2023
өлшемі3,23 Mb.
#117230
түріРеферат
1   ...   48   49   50   51   52   53   54   55   ...   65
Байланысты:
Лекции


разделенных &. Как имя типа может быть указан ранее введенный параметр. 


108 
class GenericClass> {...} 
Маски и их использование. 
Что делать при передаче экземпляров параметризованных типов в методы, т.е. 
как писать сигнатуру? Для этого используется маска , обозначающая 
произвольный тип-параметр. 
class Generic
... 
boolean compare(Generic o) { 
return o.getObj() == obj; 

Запись: 
boolean compare(Generic o) {…}
означает, что в качестве параметра методу 
compare 
может быть передан тип 
Generic
, параметризированный любым (а не конкретным, как если бы было 
Generic
) типом. 
isEqual = ccompare(Generic o); 
isEqual = compare(Generic o); 
isEqual = compare(Generic o); 
isEqual = compare(Generic o); 
ompare(Generic o); 
isEqual = 
Маски позволяют задать отношение между параметризированными типами, а 
не типами-параметрами. 
//
пусть
есть
иерархия
(
рисунок
7.2) 
class Fruit {} 
class Apple extends Fruit{} 
class Citrus extends Fruit{} 
class Orange extends Citrus{} 


109 
Рисунок 7.2 – Иерархия классов 
List fruits = new ArrayList(); 
//
Все
методы
add 
не
работают
с
ошибкой
компиляции
//add(capture
в
List 
не
может
быть
применен
к
<
Тип
_
добавляемого
_
объекта

fruits.add(new Object()); 
fruits.add(new Fruit()); 
fruits.add(new Apple()); 
fruits.add(new Citrus()); 
fruits.add(new Orange()); 
//
Этот
метод
работает
Object o = fruits.get(0); 
//
Остальные
методы
get 
не
работают

потому
что
get 
возвращает
Object 
и
нужно
приводить
объект
у
нужному
типу
Fruit f = fruits.get(0); 
Apple a = fruits.get(0); 
Citrus c = fruits.get(0); 
Orange or = fruits.get(0); 
\\
Метод
компилируется
public static List getList() { 
List fruits = new ArrayList(); 
fruits.add(new Apple()); 
return fruits; 

List wFruits1 = 
getList
();
\\
Работает
List wFruits2 = 
getList
(); \\
Ошибка
компиляции
List wFruits3 = 
getList
(); \\
Ошибка
компиляции
public static void addToList(List fruits) { 
\\add 
не
работают
все
fruits.add(new Fruit()); 


110 
fruits.add(new Apple()); 
fruits.add(new Citrus()); 
fruits.add(new Orange()); 
Object o = fruits.get(0); \\
работает
\\
остальные
get 
не
работают
Fruit f = fruits.get(0); 
Citrus c = fruits.get(0); 
Orange or = fruits.get(0); 

//
все
вызовы
не
вызывают
ошибки
компиляции
addToList(new ArrayList()); 
addToList(new ArrayList()); 
addToList(new ArrayList()); 
addToList(new ArrayList()); 


Достарыңызбен бөлісу:
1   ...   48   49   50   51   52   53   54   55   ...   65




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет