- java.lang.Object
-
- javax.smartcardio.CardTerminals
-
public abstract class CardTerminals extends Object
TerminalFactory支持的终端集。 此类允许应用程序枚举可用的CardTerminals,获取特定的CardTerminal,或等待插入或删除卡。此类是多线程安全的,可以同时由多个线程使用。 但是,该对象跟踪每个终端的卡存在状态。 如果需要独立调用waitForChange(),则应使用多个对象。
应用程序可以通过调用TerminalFactory.terminals()获取此类的实例。
- 从以下版本开始:
- 1.6
- 另请参见:
-
TerminalFactory
,CardTerminal
-
-
嵌套类汇总
嵌套类 变量和类型 类 描述 static class
CardTerminals.State
枚举CardTerminal的属性。
-
构造方法摘要
构造方法 变量 构造器 描述 protected
CardTerminals()
构造一个新的CardTerminals对象。
-
方法摘要
所有方法 实例方法 抽象方法 具体的方法 变量和类型 方法 描述 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为
State.ALL
,则此方法返回此对象封装的所有CardTerminals。 如果state为State.CARD_PRESENT
或State.CARD_ABSENT
,则返回分别当前存在或不存在卡的所有CardTerminals。如果state为
State.CARD_INSERTION
或State.CARD_REMOVAL
,则返回在上次调用waitForChange()期间检测到插入(或分别删除)的所有CardTerminals 。 如果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或从CardTerminal中waitForChange()
,则会立即返回。 否则,或者如果这是对该对象的第一次waitForChange()
调用,它将阻塞,直到卡插入CardTerminal或从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
- 如果卡操作失败
-
-