Пример локального класса




class OuterClass(){

public OuterClass(){}

private int outerField;

 

void methodWithLocalClass (final int parameter){

InnerClass innerInsideMehod;

int notFinal = 0;

 

class InnerClass{

int getOuterField(){

return OuterClass.this.outerField;

}

int getParameter(){

return parameter;

}

};

...

}

...

};

 

Анонимные классы

Анонимный класс (anonymous class) - это локальный класс без имени.

 

Доступ

см. Локальные классы

 

Ограничения

1. Так как анонимный класс является локальным классом, он имеет все те же ограничения, что и локальный класс.

2. Должен наследовать существующий класс или реализовывать существующий интерфейс

3.Невозможность описания конструктора, так как класс не имеет имени. Аргументы, указанные в скобках, автоматически используются для вызова конструктора базового класса с теми же параметрами. Например:

class Clazz {

Clazz(int param) { }

 

public static void main(String[] args) {

new Clazz(1) { }; // правильное создание анонимного класса

new Clazz() { }; // неправильное создание анонимного класса

}

}

Использование

1. тело класса является очень коротким;

2. нужен только один экземпляр класса;

3. класс используется в месте его создания или сразу после него;

4. имя класса не важно и не облегчает понимание кода.

 

Пример анонимного класса

class OuterClass(){

public OuterClass() {}

void methodWithLocalClass (final int interval){

ActionListener listener = new ActionListener(){

public void actionPerformed(ActionEvent event){

System.out.println("Эта строка выводится на

экран каждые " + interval + " секунд");

}

};

 

Timer t = new Timer(interval, listener); // Объект анонимного класса использован внутри метода

t.start();

}

}

 

Иерархия коллекций Java


Интерфейс Collection

Интерфейс Сollection из пакета java.util описывает общие свойства коллекций List и Set. Он содержит методы добавления и удаления элементов, проверки и преобразования элементов:

boolean add(Object obj) — добавляет элемент obj в конец коллекции; возвращает false, если такой элемент в коллекции уже есть, а коллекция не допускает повторяющиеся элементы; возвращает true, если добавление прошло удачно;

boolean addAll(Collection coll) — добавляет все элементы коллекции coll в конец данной коллекции;

void clear() — удаляет все элементы коллекции;

boolean contains(Object obj) — проверяет наличие элемента obj в коллекции;

boolean containsAll(Collection coll) — проверяет наличие всех элементов коллекции coll в данной коллекции;

boolean isEmpty() — проверяет, пуста ли коллекция;

Iterator iterator() — возвращает итератор данной коллекции;

boolean remove(Object obj) — удаляет указанный элемент из коллекции; возвращает false, если элемент не найден, true, если удаление прошло успешно;

boolean removeAll(Collection coll) — удаляет элементы указанной коллекции, лежащие в данной коллекции;

boolean retainAll(Collection coll) — удаляет все элементы данной коллекции, кроме элементов коллекции coll;

int size() — возвращает количество элементов в коллекции;

Object[] toArray() — возвращает все элементы коллекции в виде массива;

Object[] toArray(Object[] a) — записывает все элементы коллекции в массив а, если в нем достаточно места.

Интерфейс List

Интерфейс List из пакета java.util, расширяющий интерфейс collection, описывает методы работы с упорядоченными коллекциями. Иногда их называют последовательностями (sequence). Элементы такой коллекции пронумерованы, начиная от нуля, к ним можно обратиться по индексу. В отличие от коллекции Set элементы коллекции List могут повторяться.

Интерфейс List добавляет к методам интерфейса Collection методы, использующие индекс index элемента:

void add(int index, Object obj) — вставляет элемент obj в позицию index; старые элементы, начиная с позиции index, сдвигаются, их индексы увеличиваются на единицу;

boolean addAll(int index, Collection coll) — вставляет все элементы коллекции coll;

Object get(int index) — возвращает элемент, находящийся в позиции index;

int indexOf(Object obj) — возвращает индекс первого появления элемента obj в коллекции;

int lastIndexOf(Object obj) — возвращает индекс последнего появления элемента obj в коллекции;

ListIterator listIterator() — возвращает итератор коллекции;

ListIterator listIterator(int index) — возвращает итератор конца коллекции от позиции index;

Object set (int index, Object obj) — заменяет элемент, находящийся в позиции index, элементом obj;

List subList(int from, int to) — возвращает часть коллекции от позиции from включительно до позиции to исключительно.

Интерфейс Set

Интерфейс set из пакета java.utii, расширяющий интерфейс Collection, описывает неупорядоченную коллекцию, не содержащую повторяющихся элементов. Это соответствует математическому понятию множества (Set). Такие коллекции удобны для проверки наличия или отсутствия у элемента свойства, определяющего множество. Новые методы в интерфейс Set не добавлены, просто метод add() не станет добавлять еще одну копию элемента, если такой элемент уже есть в множестве.

Этот интерфейс расширен интерфейсом SortedSet.

Интерфейс SortedSet

Интерфейс SortedSet из пакета java.utii, расширяющий интерфейс Set, описывает упорядоченное множество, отсортированное по естественному порядку возрастания его элементов или по порядку, заданному реализацией

интерфейса Comparator.

Элементы не нумеруются, но есть понятие первого, последнего, большего и меньшего элемента.

Дополнительные методы интерфейса отражают эти понятия:

Comparator comparator() — возвращает способ упорядочения коллекции; Object first() — возвращает первый, меньший элемент коллекции;

SortedSet headSet(Object toEiement) — возвращает начальные, меньшие элементы до элемента toEiement исключительно;

Object last() — возвращает последний, больший элемент коллекции;

SortedSet subSet(Object fromElement, Object toEiement) — возвращает подмножество коллекции от элемента fromElement включительно до элемента toEiement исключительно;

SortedSet tailSet(Object fromElement) — возвращает последние, большие элементы коллекции от элемента fromElement включительно.

Интерфейс Map

Интерфейс Map из пакета java.utii описывает коллекцию, состоящую из пар "ключ — значение". У каждого ключа только одно значение, что соответствует математическому понятию однозначной функции или отображения (map).

Такую коллекцию часто называют еще словарем (dictionary) или ассоциативным массивом (associative array).

Обычный массив — простейший пример словаря с заранее заданным числом элементов. Это отображение множества первых неотрицательных целых чисел на множество элементов массива, множество пар "индекс массива ^-элемент массива".

Класс HashTable — одна из реализаций интерфейса Map.

Интерфейс Map содержит методы, работающие с ключами и значениями:

boolean containsKey(Object key) — проверяет наличие ключа key;

boolean containsValue(Object value) — проверяет наличие значения value;

Set entrySet() — представляет коллекцию в виде множества, каждый элемент которого — пара из данного отображения, с которой можно работать методами вложенного интерфейса Map. Entry;

Object get(Object key) — возвращает значение, отвечающее ключу key; set keyset() — представляет ключи коллекции в виде множества;

Object put(Object key, Object value) — добавляет пару "key— value", если такой пары не было, и заменяет значение ключа key, если такой ключ уже есть в коллекции;

void putAll(Map m) — добавляет к коллекции все пары из отображения m;

Collection values() — представляет все значения в виде коллекции.

В интерфейс мар вложен интерфейс Map.Entry, содержащий методы работы с отдельной парой.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: