Spec-Zone.ru › OpenJDK 27

Класс CardTerminals

java.lang.Object
javax.smartcardio.CardTerminals
public abstract class CardTerminals extends Object
Набор терминалов, поддерживаемых TerminalFactory. Этот класс позволяет приложениям перечислять доступные CardTerminals, получать определённый CardTerminal или ожидать вставки либо извлечения карт.

Этот класс безопасен для многопоточного использования и может одновременно использоваться несколькими потоками. Однако этот объект отслеживает состояние присутствия карты в каждом из своих терминалов. Если требуются независимые вызовы waitForChange(), следует использовать несколько объектов.

Приложения могут получить экземпляры этого класса, вызвав TerminalFactory.terminals().

Начиная с версии:
1.6
См. также:
  • TerminalFactory
  • CardTerminal

Краткое описание вложенных классов

Модификатор и тип Класс Описание
static enum  CardTerminals.State
Перечисление атрибутов CardTerminal.

Краткое описание конструкторов

CardTerminals()
Модификатор Конструктор Описание
protected
Создаёт новый объект CardTerminals.

Краткое описание методов

Модификатор и тип Метод Описание
CardTerminal getTerminal(String name)
Возвращает терминал с указанным именем или null, если такого терминала нет.
List<CardTerminal> list()
Возвращает неизменяемый список всех доступных терминалов.
abstract List<CardTerminal> list(CardTerminals.State state)
Возвращает неизменяемый список всех терминалов, соответствующих указанному состоянию.
void waitForChange()
Ожидает вставки или извлечения карты в любом из терминалов этого объекта.
abstract boolean waitForChange(long timeout)
Ожидает вставки или извлечения карты в любом из терминалов этого объекта либо истечения времени ожидания.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект какому-либо другому объекту.
protected void finalize()
Устарел, подлежит удалению: этот элемент API может быть удалён в будущей версии.
Финализация объявлена устаревшей и подлежит удалению в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Переводит текущий поток в режим ожидания до его пробуждения, обычно посредством вызова notify или interrupt.
final void wait(long timeoutMillis)
Переводит текущий поток в режим ожидания до его пробуждения, обычно посредством вызова notify или interrupt, либо до истечения заданного времени.
final void wait(long timeoutMillis, int nanos)
Переводит текущий поток в режим ожидания до его пробуждения, обычно посредством вызова notify или interrupt, либо до истечения заданного времени.

Подробное описание конструкторов

CardTerminals

protected CardTerminals()
Создаёт новый объект CardTerminals.

Этот конструктор вызывается только подклассами. Для получения объекта CardTerminals приложению следует вызвать TerminalFactory.terminals().

Подробное описание методов

list

public List<CardTerminal> list() throws CardException
Возвращает неизменяемый список всех доступных терминалов.
Возвращает:
неизменяемый список всех доступных терминалов.
Выбрасывает:
CardException — если операция с картой завершилась ошибкой

list

public abstract List<CardTerminal> list(CardTerminals.State state) throws CardException
Возвращает неизменяемый список всех терминалов, соответствующих указанному состоянию.

Если state — это State.ALL, данный метод возвращает все CardTerminals, инкапсулированные этим объектом. Если state — это State.CARD_PRESENT или State.CARD_ABSENT, он возвращает все CardTerminals, в которых карта присутствует или отсутствует в данный момент соответственно.

Если state — это State.CARD_INSERTION или State.CARD_REMOVAL, он возвращает все CardTerminals, в которых с момента последнего вызова waitForChange() было обнаружено соответственно появление или извлечение карты. Если для этого объекта не вызывался waitForChange(), CARD_INSERTION эквивалентно CARD_PRESENT, а CARD_REMOVAL эквивалентно CARD_ABSENT. Пример использования CARD_INSERTION см. в описании waitForChange().

Параметры:
state — состояние
Возвращает:
неизменяемый список всех терминалов, соответствующих указанному состоянию.
Выбрасывает:
NullPointerException — если state равно null
CardException — если операция с картой завершилась ошибкой

getTerminal

public CardTerminal getTerminal(String name)
Возвращает терминал с указанным именем или null, если такого терминала нет.
Параметры:
name — имя терминала
Возвращает:
терминал с указанным именем или null, если такого терминала нет.
Выбрасывает:
NullPointerException — если name равно null

waitForChange

public void waitForChange() throws CardException
Ожидает вставки или извлечения карты в любом из терминалов этого объекта.

Этот вызов эквивалентен вызову waitForChange(0).

Выбрасывает:
IllegalStateException — если этот объект CardTerminals не содержит терминалов
CardException — если операция с картой завершилась ошибкой

waitForChange

public abstract boolean waitForChange(long timeout) throws CardException
Ожидает вставки или извлечения карты в любом из терминалов этого объекта либо истечения времени ожидания.

Этот метод проверяет каждый CardTerminal этого объекта. Если после предыдущего вызова waitForChange() в CardTerminal была вставлена или извлечена карта, метод немедленно возвращает управление. В противном случае, а также при первом вызове waitForChange() для этого объекта, метод блокируется до вставки или извлечения карты из CardTerminal.

Если timeout больше 0, метод возвращает управление через timeout миллисекунд, даже если состояние не изменилось. В этом случае метод возвращает false; в противном случае он возвращает true.

Этот метод часто используется в цикле совместно с list(State.CARD_INSERTION), например:

 TerminalFactory factory = ...;
 CardTerminals terminals = factory.terminals();
 while (true) {
     for (CardTerminal terminal : terminals.list(CARD_INSERTION)) {
         // examine Card in terminal, return if it matches
     }
     terminals.waitForChange();
 }
Параметры:
timeout — если значение положительное, блокирует выполнение не более чем на timeout миллисекунд; если равно нулю, блокирует выполнение без ограничения времени; не должно быть отрицательным
Возвращает:
false, если метод вернулся из-за истечения времени ожидания; в противном случае — true.
Выбрасывает:
IllegalStateException — если этот объект CardTerminals не содержит терминалов
IllegalArgumentException — если timeout отрицателен
CardException — если операция с картой завершилась ошибкой

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API