Spec-Zone.ru › OpenJDK 25

Класс 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

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

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, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.smartcardio/javax/smartcardio/CardTerminals.html

Spec-Zone.ru

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