- java.lang.Object
-
- javax.smartcardio.CardTerminals
-
public abstract class CardTerminals extends Object
TerminalFactory支持的一组终端。 该类允许应用程序枚举可用的CardTerminals,获取特定的CardTerminal,或等待卡的插入或删除。这个类是多线程安全的,可以同时被多个线程使用。 然而,该对象跟踪其每个终端的卡存在状态。 如果需要独立调用waitForChange(),则应使用多个对象。
应用程序可以通过调用TerminalFactory.terminals()获取此类的实例。
- 从以下版本开始:
- 1.6
- 另请参见:
-
TerminalFactory
,CardTerminal
-
-
Nested Class Summary
Nested Classes Modifier and Type Class 描述 static class
CardTerminals.State
枚举CardTerminal的属性。
-
构造方法摘要
构造方法 Modifier Constructor 描述 protected
CardTerminals()
构造一个新的CardTerminals对象。
-
方法摘要
所有方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 CardTerminal
getTerminal(String name)
返回具有指定名称的终端,如果不存在此类终端则返回null。List<CardTerminal>
list()
返回所有可用终端的不可修改列表。abstract List<CardTerminal>
list(CardTerminals.State state)
返回与指定状态匹配的所有终端的不可修改列表。void
waitForChange()
等待在该对象的任何终端中插入或删除卡。abstract boolean
waitForChange(long timeout)
等待在该对象的任何终端中插入或删除卡,或者超时到期。
-
-
-
构造方法详细信息
-
CardTerminals
protected CardTerminals()
构造一个新的CardTerminals对象。此构造函数仅由子类调用。 应用程序应调用TerminalFactory.terminals()获取CardTerminals对象。
-
-
方法详细信息
-
list
public List<CardTerminal> list() throws CardException
返回所有可用终端的不可修改列表。- 结果
- 所有可用终端的不可修改的列表。
- 异常
-
CardException
- 如果卡操作失败
-
list
public abstract List<CardTerminal> list(CardTerminals.State state) throws CardException
返回与指定状态匹配的所有终端的不可修改列表。如果状态为
State.ALL
,则此方法返回此对象封装的所有CardTerminals。 如果状态为State.CARD_PRESENT
或State.CARD_ABSENT
,则会分别返回卡片当前存在或不存在的所有CardTerminals。如果状态为
State.CARD_INSERTION
或State.CARD_REMOVAL
,则会返回在最后一次调用期间检测到插入(或删除)的所有CardTerminals( waitForChange()) 。 如果waitForChange()
尚未调用这个对象上,CARD_INSERTION
相当于CARD_PRESENT
和CARD_REMOVAL
相当于CARD_ABSENT
。 有关使用CARD_INSERTION
,请参阅waitForChange()
。- 参数
-
state
- 国家 - 结果
- 所有终端匹配指定状态的不可修改的列表。
- 异常
-
NullPointerException
- 如果状态为空 -
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
- 如果超时为负 -
CardException
- 如果卡操作失败
-
-