Класс CardTerminals
public abstract class CardTerminals extends Object
Этот класс безопасен при многопоточном использовании, и его могут одновременно использовать несколько потоков. Однако этот объект отслеживает состояние присутствия карты в каждом из своих терминалов. Если требуется выполнять независимые вызовы waitForChange(), следует использовать несколько объектов.
Приложения могут получить экземпляры этого класса, вызвав TerminalFactory.terminals().
- Начиная с версии:
- 1.6
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static enum |
CardTerminals.State |
Перечисление атрибутов CardTerminal. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Создаёт новый объект CardTerminals. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
CardTerminal |
getTerminal |
Возвращает терминал с указанным именем или null, если такого терминала нет. |
List |
list() |
Возвращает неизменяемый список всех доступных терминалов. |
abstract List |
list |
Возвращает неизменяемый список всех терминалов, соответствующих указанному состоянию. |
void |
waitForChange() |
Ожидает вставки или извлечения карты в любом из терминалов этого объекта. |
abstract boolean |
waitForChange |
Ожидает вставки или извлечения карты в любом из терминалов этого объекта либо истечения времени ожидания. |
Подробное описание конструкторов
CardTerminals
protected 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)
- Параметры:
-
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— если операция с картой завершилась неудачно
© 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