Spec-Zone .ru
спецификации, руководства, описания, API
|
E
- тип элементов сохранен в этом набореpublic class LinkedBlockingDeque<E> extends AbstractQueue<E> implements BlockingDeque<E>, Serializable
Дополнительная емкость связанный параметр конструктора служит способом предотвратить чрезмерное расширение. Емкость, если неуказанный, равна Integer.MAX_VALUE
. Соединенные узлы динамически создаются на каждую вставку, если это не принесло бы двухстороннюю очередь выше емкости.
Большинство операций, выполненных в постоянное время (игнорирующий время потратил блокирование). Исключения включают remove
, removeFirstOccurrence
, removeLastOccurrence
, contains
, iterator.remove()
, и объемные операции, все из который выполненный в линейное время.
Этот class и его iterator реализуют все дополнительные методы Collection
и Iterator
интерфейсы.
Этот class является элементом Платформы Наборов Java.
Конструктор и Описание |
---|
LinkedBlockingDeque()
Создает a
LinkedBlockingDeque с емкостью Integer.MAX_VALUE . |
LinkedBlockingDeque(Collection<? extends E> c)
Создает a
LinkedBlockingDeque с емкостью Integer.MAX_VALUE , первоначально содержа элементы данного набора, добавленного в порядке обхода iterator набора. |
LinkedBlockingDeque(int capacity)
Создает a
LinkedBlockingDeque с данной (фиксированной) емкостью. |
Модификатор и Тип | Метод и Описание |
---|---|
boolean |
add(E e)
Вставляет указанный элемент в конце этой двухсторонней очереди, если это не нарушило бы ограничения емкости.
|
void |
addFirst(E e)
Вставляет указанный элемент впереди этой двухсторонней очереди, если возможно сделать так сразу, не нарушая ограничения емкости, бросая IllegalStateException, если никакое пространство не в настоящий момент доступно.
|
void |
addLast(E e)
Вставляет указанный элемент в конце этой двухсторонней очереди, если возможно сделать так сразу, не нарушая ограничения емкости, бросая IllegalStateException, если никакое пространство не в настоящий момент доступно.
|
void |
clear()
Атомарно удаляет все элементы от этой двухсторонней очереди.
|
boolean |
contains(Object o)
Возвраты
true если эта двухсторонняя очередь содержит указанный элемент. |
Iterator<E> |
descendingIterator()
Возвращает iterator по элементам в этой двухсторонней очереди в обратном последовательном порядке.
|
int |
drainTo(Collection<? super E> c)
Удаляет все доступные элементы из этой очереди и добавляет их к данному набору.
|
int |
drainTo(Collection<? super E> c, int maxElements)
Удаляет самое большее данное число доступных элементов от этой очереди и добавляет их к данному набору.
|
E |
element()
Получает, но не удаляет, глава очереди, представленной этой двухсторонней очередью.
|
E |
getFirst()
Получает, но не удаляет, первый элемент этой двухсторонней очереди.
|
E |
getLast()
Получает, но не удаляет, последний элемент этой двухсторонней очереди.
|
Iterator<E> |
iterator()
Возвращает iterator по элементам в этой двухсторонней очереди в надлежащей последовательности.
|
boolean |
offer(E e)
Вставляет указанный элемент в очередь, представленную этой двухсторонней очередью (другими словами, в хвосте этой двухсторонней очереди), если возможно сделать так сразу, не нарушая ограничения емкости, возвращая true на успех и false, если никакое пространство не в настоящий момент доступно.
|
boolean |
offer(E e, long timeout, TimeUnit unit)
Вставляет указанный элемент в очередь, представленную этой двухсторонней очередью (другими словами, в хвосте этой двухсторонней очереди), дожидаясь к указанному времени ожидания в случае необходимости для пространства, чтобы стать доступным.
|
boolean |
offerFirst(E e)
Вставляет указанный элемент впереди этой двухсторонней очереди, если возможно сделать так сразу, не нарушая ограничения емкости, возвращая true на успех и false, если никакое пространство не в настоящий момент доступно.
|
boolean |
offerFirst(E e, long timeout, TimeUnit unit)
Вставляет указанный элемент впереди этой двухсторонней очереди, дожидаясь к указанному времени ожидания в случае необходимости для пространства, чтобы стать доступным.
|
boolean |
offerLast(E e)
Вставляет указанный элемент в конце этой двухсторонней очереди, если возможно сделать так сразу, не нарушая ограничения емкости, возвращая true на успех и false, если никакое пространство не в настоящий момент доступно.
|
boolean |
offerLast(E e, long timeout, TimeUnit unit)
Вставляет указанный элемент в конце этой двухсторонней очереди, дожидаясь к указанному времени ожидания в случае необходимости для пространства, чтобы стать доступным.
|
E |
peek()
Получает, но не удаляет, глава очереди, представленной этой двухсторонней очередью (другими словами, первый элемент этой двухсторонней очереди), или возвращает null, если эта двухсторонняя очередь пуста.
|
E |
peekFirst()
Получает, но не удаляет, первый элемент этой двухсторонней очереди, или возвращает null, если эта двухсторонняя очередь пуста.
|
E |
peekLast()
Получает, но не удаляет, последний элемент этой двухсторонней очереди, или возвращает null, если эта двухсторонняя очередь пуста.
|
E |
poll()
Получает и удаляет главу очереди, представленной этой двухсторонней очередью (другими словами, первый элемент этой двухсторонней очереди), или возвращает null, если эта двухсторонняя очередь пуста.
|
E |
poll(long timeout, TimeUnit unit)
Получает и удаляет главу очереди, представленной этой двухсторонней очередью (другими словами, первый элемент этой двухсторонней очереди), дожидаясь к указанному времени ожидания в случае необходимости для элемента, чтобы стать доступным.
|
E |
pollFirst()
Получает и удаляет первый элемент этой двухсторонней очереди, или возвращает null, если эта двухсторонняя очередь пуста.
|
E |
pollFirst(long timeout, TimeUnit unit)
Получает и удаляет первый элемент этой двухсторонней очереди, дожидаясь к указанному времени ожидания в случае необходимости для элемента, чтобы стать доступным.
|
E |
pollLast()
Получает и удаляет последний элемент этой двухсторонней очереди, или возвращает null, если эта двухсторонняя очередь пуста.
|
E |
pollLast(long timeout, TimeUnit unit)
Получает и удаляет последний элемент этой двухсторонней очереди, дожидаясь к указанному времени ожидания в случае необходимости для элемента, чтобы стать доступным.
|
E |
pop()
Выталкивает элемент от стека, представленного этой двухсторонней очередью.
|
void |
push(E e)
Продвигает элемент на стек, представленный этой двухсторонней очередью.
|
void |
put(E e)
Вставляет указанный элемент в очередь, представленную этой двухсторонней очередью (другими словами, в хвосте этой двухсторонней очереди), ожидая в случае необходимости пространства, чтобы стать доступным.
|
void |
putFirst(E e)
Вставляет указанный элемент впереди этой двухсторонней очереди, ожидая в случае необходимости пространства, чтобы стать доступным.
|
void |
putLast(E e)
Вставляет указанный элемент в конце этой двухсторонней очереди, ожидая в случае необходимости пространства, чтобы стать доступным.
|
int |
remainingCapacity()
Возвращает число дополнительных элементов, что эта двухсторонняя очередь может идеально (в отсутствие памяти, или ограничения ресурса) принимают без блокирования.
|
E |
remove()
Получает и удаляет главу очереди, представленной этой двухсторонней очередью.
|
boolean |
remove(Object o)
Удаляет первое возникновение указанного элемента от этой двухсторонней очереди.
|
E |
removeFirst()
Получает и удаляет первый элемент этой двухсторонней очереди.
|
boolean |
removeFirstOccurrence(Object o)
Удаляет первое возникновение указанного элемента от этой двухсторонней очереди.
|
E |
removeLast()
Получает и удаляет последний элемент этой двухсторонней очереди.
|
boolean |
removeLastOccurrence(Object o)
Удаляет последнее вхождение указанного элемента от этой двухсторонней очереди.
|
int |
size()
Возвращает число элементов в этой двухсторонней очереди.
|
E |
take()
Получает и удаляет главу очереди, представленной этой двухсторонней очередью (другими словами, первый элемент этой двухсторонней очереди), ожидая в случае необходимости, пока элемент не становится доступным.
|
E |
takeFirst()
Получает и удаляет первый элемент этой двухсторонней очереди, ожидая в случае необходимости, пока элемент не становится доступным.
|
E |
takeLast()
Получает и удаляет последний элемент этой двухсторонней очереди, ожидая в случае необходимости, пока элемент не становится доступным.
|
Объект[] |
toArray()
Возвращает массив, содержащий все элементы в этой двухсторонней очереди, в надлежащей последовательности (от сначала, чтобы продлиться элемент).
|
<T> T[] |
toArray(T[] a)
Возвращает массив, содержащий все элементы в этой двухсторонней очереди, в надлежащей последовательности; тип времени выполнения возвращенного массива является типом указанного массива.
|
Строка |
toString()
Возвращает строковое представление этого набора.
|
addAll
containsAll, isEmpty, removeAll, retainAll
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
addAll, containsAll, equals, hashCode, isEmpty, parallelStream, removeAll, removeIf, retainAll, spliterator, stream
forEach
public LinkedBlockingDeque()
LinkedBlockingDeque
с емкостью Integer.MAX_VALUE
.public LinkedBlockingDeque(int capacity)
LinkedBlockingDeque
с данной (фиксированной) емкостью.capacity
- емкость этой двухсторонней очередиIllegalArgumentException
- если capacity
меньше чем 1public LinkedBlockingDeque(Collection<? extends E> c)
LinkedBlockingDeque
с емкостью Integer.MAX_VALUE
, первоначально содержа элементы данного набора, добавленного в порядке обхода iterator набора.c
- набор элементов, чтобы первоначально содержатьNullPointerException
- если указанный набор или какой-либо из его элементов являются нулемpublic void addFirst(E e)
BlockingDeque
offerFirst
.addFirst
в интерфейсе BlockingDeque<E>
addFirst
в интерфейсе Deque<E>
e
- элемент, чтобы добавитьIllegalStateException
- если элемент не может быть добавлен в это время из-за ограничений емкостиNullPointerException
- если указанный элемент является нулемpublic void addLast(E e)
BlockingDeque
offerLast
.addLast
в интерфейсе BlockingDeque<E>
addLast
в интерфейсе Deque<E>
e
- элемент, чтобы добавитьIllegalStateException
- если элемент не может быть добавлен в это время из-за ограничений емкостиNullPointerException
- если указанный элемент является нулемpublic boolean offerFirst(E e)
BlockingDeque
addFirst
метод, который может быть не в состоянии вставить элемент только, выдавая исключение.offerFirst
в интерфейсе BlockingDeque<E>
offerFirst
в интерфейсе Deque<E>
e
- элемент, чтобы добавитьNullPointerException
- если указанный элемент является нулемpublic boolean offerLast(E e)
BlockingDeque
addLast
метод, который может быть не в состоянии вставить элемент только, выдавая исключение.offerLast
в интерфейсе BlockingDeque<E>
offerLast
в интерфейсе Deque<E>
e
- элемент, чтобы добавитьNullPointerException
- если указанный элемент является нулемpublic void putFirst(E e) throws InterruptedException
BlockingDeque
putFirst
в интерфейсе BlockingDeque<E>
e
- элемент, чтобы добавитьNullPointerException
- если указанный элемент является нулемInterruptedException
- если прервано, ожидаяpublic void putLast(E e) throws InterruptedException
BlockingDeque
putLast
в интерфейсе BlockingDeque<E>
e
- элемент, чтобы добавитьNullPointerException
- если указанный элемент является нулемInterruptedException
- если прервано, ожидаяpublic boolean offerFirst(E e, long timeout, TimeUnit unit) throws InterruptedException
BlockingDeque
offerFirst
в интерфейсе BlockingDeque<E>
e
- элемент, чтобы добавитьtimeout
- сколько времени ожидать перед отказом в модулях unitunit
- TimeUnit, определяющий, как интерпретировать параметр timeoutNullPointerException
- если указанный элемент является нулемInterruptedException
- если прервано, ожидаяpublic boolean offerLast(E e, long timeout, TimeUnit unit) throws InterruptedException
BlockingDeque
offerLast
в интерфейсе BlockingDeque<E>
e
- элемент, чтобы добавитьtimeout
- сколько времени ожидать перед отказом в модулях unitunit
- TimeUnit, определяющий, как интерпретировать параметр timeoutNullPointerException
- если указанный элемент является нулемInterruptedException
- если прервано, ожидаяpublic E removeFirst()
Deque
pollFirst
только в этом это выдает исключение, если эта двухсторонняя очередь пуста.removeFirst
в интерфейсе Deque<E>
NoSuchElementException
- если эта двухсторонняя очередь пустаpublic E removeLast()
Deque
pollLast
только в этом это выдает исключение, если эта двухсторонняя очередь пуста.removeLast
в интерфейсе Deque<E>
NoSuchElementException
- если эта двухсторонняя очередь пустаpublic E pollFirst()
Deque
public E pollLast()
Deque
public E takeFirst() throws InterruptedException
BlockingDeque
takeFirst
в интерфейсе BlockingDeque<E>
InterruptedException
- если прервано, ожидаяpublic E takeLast() throws InterruptedException
BlockingDeque
takeLast
в интерфейсе BlockingDeque<E>
InterruptedException
- если прервано, ожидаяpublic E pollFirst(long timeout, TimeUnit unit) throws InterruptedException
BlockingDeque
pollFirst
в интерфейсе BlockingDeque<E>
timeout
- сколько времени ожидать перед отказом в модулях unitunit
- TimeUnit, определяющий, как интерпретировать параметр timeoutInterruptedException
- если прервано, ожидаяpublic E pollLast(long timeout, TimeUnit unit) throws InterruptedException
BlockingDeque
pollLast
в интерфейсе BlockingDeque<E>
timeout
- сколько времени ожидать перед отказом в модулях unitunit
- TimeUnit, определяющий, как интерпретировать параметр timeoutInterruptedException
- если прервано, ожидаяpublic E getFirst()
Deque
peekFirst
только в этом это выдает исключение, если эта двухсторонняя очередь пуста.getFirst
в интерфейсе Deque<E>
NoSuchElementException
- если эта двухсторонняя очередь пустаpublic E getLast()
Deque
peekLast
только в этом это выдает исключение, если эта двухсторонняя очередь пуста.getLast
в интерфейсе Deque<E>
NoSuchElementException
- если эта двухсторонняя очередь пустаpublic E peekFirst()
Deque
public E peekLast()
Deque
public boolean removeFirstOccurrence(Object o)
BlockingDeque
removeFirstOccurrence
в интерфейсе BlockingDeque<E>
removeFirstOccurrence
в интерфейсе Deque<E>
o
- элемент, который будет удален из этой двухсторонней очереди, если существующийpublic boolean removeLastOccurrence(Object o)
BlockingDeque
removeLastOccurrence
в интерфейсе BlockingDeque<E>
removeLastOccurrence
в интерфейсе Deque<E>
o
- элемент, который будет удален из этой двухсторонней очереди, если существующийpublic boolean add(E e)
offer
. Этот метод эквивалентен addLast(E)
.
add
в интерфейсе Collection<E>
add
в интерфейсе BlockingDeque<E>
add
в интерфейсе BlockingQueue<E>
add
в интерфейсе Deque<E>
add
в интерфейсе Queue<E>
add
в class AbstractQueue<E>
e
- элемент, чтобы добавитьCollection.add(E)
)IllegalStateException
- если элемент не может быть добавлен в это время из-за ограничений емкостиNullPointerException
- если указанный элемент является нулемpublic boolean offer(E e)
BlockingDeque
BlockingDeque.add(E)
метод, который может быть не в состоянии вставить элемент только, выдавая исключение. Этот метод эквивалентен offerLast
.
offer
в интерфейсе BlockingDeque<E>
offer
в интерфейсе BlockingQueue<E>
offer
в интерфейсе Deque<E>
offer
в интерфейсе Queue<E>
e
- элемент, чтобы добавитьNullPointerException
- если указанный элемент является нулемpublic void put(E e) throws InterruptedException
BlockingDeque
Этот метод эквивалентен putLast
.
put
в интерфейсе BlockingDeque<E>
put
в интерфейсе BlockingQueue<E>
e
- элемент, чтобы добавитьNullPointerException
- если указанный элемент является нулемInterruptedException
- если прервано, ожидаяpublic boolean offer(E e, long timeout, TimeUnit unit) throws InterruptedException
BlockingDeque
Этот метод эквивалентен offerLast
.
offer
в интерфейсе BlockingDeque<E>
offer
в интерфейсе BlockingQueue<E>
e
- элемент, чтобы добавитьtimeout
- сколько времени ожидать перед отказом в модулях unitunit
- TimeUnit, определяющий, как интерпретировать параметр timeoutNullPointerException
- если указанный элемент является нулемInterruptedException
- если прервано, ожидаяpublic E remove()
poll
только в этом это выдает исключение, если эта двухсторонняя очередь пуста. Этот метод эквивалентен removeFirst
.
remove
в интерфейсе BlockingDeque<E>
remove
в интерфейсе Deque<E>
remove
в интерфейсе Queue<E>
remove
в class AbstractQueue<E>
NoSuchElementException
- если эта двухсторонняя очередь пустаpublic E poll()
BlockingDeque
Этот метод эквивалентен Deque.pollFirst()
.
public E take() throws InterruptedException
BlockingDeque
Этот метод эквивалентен takeFirst
.
take
в интерфейсе BlockingDeque<E>
take
в интерфейсе BlockingQueue<E>
InterruptedException
- если прервано, ожидаяpublic E poll(long timeout, TimeUnit unit) throws InterruptedException
BlockingDeque
Этот метод эквивалентен pollFirst
.
poll
в интерфейсе BlockingDeque<E>
poll
в интерфейсе BlockingQueue<E>
timeout
- сколько времени ожидать перед отказом в модулях unitunit
- TimeUnit, определяющий, как интерпретировать параметр timeoutInterruptedException
- если прервано, ожидаяpublic E element()
peek
только в этом это выдает исключение, если эта двухсторонняя очередь пуста. Этот метод эквивалентен getFirst
.
element
в интерфейсе BlockingDeque<E>
element
в интерфейсе Deque<E>
element
в интерфейсе Queue<E>
element
в class AbstractQueue<E>
NoSuchElementException
- если эта двухсторонняя очередь пустаpublic E peek()
BlockingDeque
Этот метод эквивалентен peekFirst
.
public int remainingCapacity()
size
из этой двухсторонней очереди. Отметьте, что невозможно всегда говорить, успешно выполнится ли попытка вставить элемент, осматривая remainingCapacity
потому что это может иметь место, что другой поток собирается вставить или удалить элемент.
remainingCapacity
в интерфейсе BlockingQueue<E>
public int drainTo(Collection<? super E> c)
BlockingQueue
drainTo
в интерфейсе BlockingQueue<E>
c
- набор, чтобы передать элементы вUnsupportedOperationException
- если добавление элементов не поддерживается указанным наборомClassCastException
- если class элемента этой очереди препятствует тому, чтобы это было добавлено к указанному наборуNullPointerException
- если указанный набор является нулемIllegalArgumentException
- если указанный набор является этой очередью, или некоторое свойство элемента этой очереди препятствует тому, чтобы это было добавлено к указанному наборуpublic int drainTo(Collection<? super E> c, int maxElements)
BlockingQueue
drainTo
в интерфейсе BlockingQueue<E>
c
- набор, чтобы передать элементы вmaxElements
- максимальное количество элементов, чтобы передатьUnsupportedOperationException
- если добавление элементов не поддерживается указанным наборомClassCastException
- если class элемента этой очереди препятствует тому, чтобы это было добавлено к указанному наборуNullPointerException
- если указанный набор является нулемIllegalArgumentException
- если указанный набор является этой очередью, или некоторое свойство элемента этой очереди препятствует тому, чтобы это было добавлено к указанному наборуpublic void push(E e)
BlockingDeque
Этот метод эквивалентен addFirst
.
push
в интерфейсе BlockingDeque<E>
push
в интерфейсе Deque<E>
e
- элемент, чтобы продвинутьIllegalStateException
- если элемент не может быть добавлен в это время из-за ограничений емкостиNullPointerException
- если указанный элемент является нулемpublic E pop()
Deque
Этот метод эквивалентен Deque.removeFirst()
.
pop
в интерфейсе Deque<E>
NoSuchElementException
- если эта двухсторонняя очередь пустаpublic boolean remove(Object o)
e
так, что o.equals(e)
(если такой элемент существует). Возвраты true
если эта двухсторонняя очередь, содержавшая указанный элемент (или эквивалентно, если эта двухсторонняя очередь, измененная в результате вызова). Этот метод эквивалентен removeFirstOccurrence
.
remove
в интерфейсе Collection<E>
remove
в интерфейсе BlockingDeque<E>
remove
в интерфейсе BlockingQueue<E>
remove
в интерфейсе Deque<E>
remove
в class AbstractCollection<E>
o
- элемент, который будет удален из этой двухсторонней очереди, если существующийtrue
если эта двухсторонняя очередь изменилась в результате вызоваpublic int size()
size
в интерфейсе Collection<E>
size
в интерфейсе BlockingDeque<E>
size
в интерфейсе Deque<E>
size
в class AbstractCollection<E>
public boolean contains(Object o)
true
если эта двухсторонняя очередь содержит указанный элемент. Более формально, возвраты true
если и только если эта двухсторонняя очередь содержит по крайней мере один элемент e
так, что o.equals(e)
.contains
в интерфейсе Collection<E>
contains
в интерфейсе BlockingDeque<E>
contains
в интерфейсе BlockingQueue<E>
contains
в интерфейсе Deque<E>
contains
в class AbstractCollection<E>
o
- объект, который будет проверен на включение в этой двухсторонней очередиtrue
если эта двухсторонняя очередь содержит указанный элементpublic Object[] toArray()
Возвращенный массив будет "безопасен" в этом, никакие ссылки на него не сохраняются этой двухсторонней очередью. (Другими словами этот метод должен выделить новый массив). Вызывающая сторона таким образом свободна изменить возвращенный массив.
Этот метод действует как мост между основанными на массиве и основанными на наборе API.
toArray
в интерфейсе Collection<E>
toArray
в class AbstractCollection<E>
public <T> T[] toArray(T[] a)
Если эта двухсторонняя очередь помещается в указанный массив с комнатой, чтобы сэкономить (то есть, у массива есть больше элементов чем эта двухсторонняя очередь), элемент в массиве сразу после конца двухсторонней очереди устанавливается в null
.
Как toArray()
метод, этот метод действует как мост между основанными на массиве и основанными на наборе API. Далее, этот метод позволяет точное управление типом времени выполнения выходного массива, и, при определенных обстоятельствах, может использоваться, чтобы сохранить затраты выделения.
Предположить x
двухсторонняя очередь, которая, как известно, содержала только строки. Следующий код может использоваться, чтобы вывести двухстороннюю очередь в недавно выделенный массив String
:
String[] y = x.toArray(new String[0]);
Отметьте это toArray(new Object[0])
идентично в функции toArray()
.toArray
в интерфейсе Collection<E>
toArray
в class AbstractCollection<E>
a
- массив, в который должны быть сохранены элементы двухсторонней очереди, если это является достаточно большим; иначе, новый массив того же самого типа времени выполнения выделяется с этой цельюArrayStoreException
- если тип времени выполнения указанного массива не является супертипом типа времени выполнения каждого элемента в этой двухсторонней очередиNullPointerException
- если указанный массив является нулемpublic String toString()
AbstractCollection
String.valueOf(Object)
.toString
в class AbstractCollection<E>
public void clear()
clear
в интерфейсе Collection<E>
clear
в class AbstractQueue<E>
public Iterator<E> iterator()
Возвращенный iterator "слабо непротиворечивый" iterator, который никогда не будет бросать ConcurrentModificationException
, и гарантии, чтобы пересечь элементы, поскольку они существовали на конструкцию iterator, и может (но не гарантироваться), отражают любые модификации, последующие за конструкцией.
iterator
в интерфейсе Iterable<E>
iterator
в интерфейсе Collection<E>
iterator
в интерфейсе BlockingDeque<E>
iterator
в интерфейсе Deque<E>
iterator
в class AbstractCollection<E>
public Iterator<E> descendingIterator()
Возвращенный iterator "слабо непротиворечивый" iterator, который никогда не будет бросать ConcurrentModificationException
, и гарантии, чтобы пересечь элементы, поскольку они существовали на конструкцию iterator, и может (но не гарантироваться), отражают любые модификации, последующие за конструкцией.
descendingIterator
в интерфейсе Deque<E>
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92