这个类是多线程安全的,可以被多个线程同时使用。但是,此对象会跟踪其每个终端的卡存在状态。如果需要对 waitForChange() 的独立调用,则应使用多个对象。
应用程序可以通过调用 TerminalFactory.terminals() 来获取此类的实例。
- 自从:
- 1.6
- 参见:
-
内部类总结
内部类 -
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述getTerminal
(String name) 返回具有指定名称的终端,如果不存在此类终端,则返回 null。list()
返回所有可用终端的不可修改列表。abstract List<CardTerminal>
list
(CardTerminals.State state) 返回与指定状态匹配的所有终端的不可修改列表。void
等待在此对象的任何终端中插入或移除卡。abstract boolean
waitForChange
(long timeout) 等待卡插入或移除此对象的任何终端或直到超时到期。
-
构造方法详细信息
-
CardTerminals
protected CardTerminals()构造一个新的 CardTerminals 对象。此构造函数仅由子类调用。应用程序应调用 TerminalFactory.terminals() 以获得 CardTerminals 对象。
-
-
方法详情
-
list
返回所有可用终端的不可修改列表。- 返回:
- 所有可用终端的不可修改列表。
- 抛出:
CardException
- 如果卡片操作失败
-
list
返回与指定状态匹配的所有终端的不可修改列表。如果 state 为
State.ALL
,则此方法返回此对象封装的所有 CardTerminal。如果 state 是State.CARD_PRESENT
或State.CARD_ABSENT
,它分别返回当前存在或不存在卡片的所有 CardTerminals。如果 state 是
State.CARD_INSERTION
或State.CARD_REMOVAL
,它返回在上次调用 waitForChange() 期间检测到插入(或移除)的所有 CardTerminal。如果尚未在此对象上调用waitForChange()
,则CARD_INSERTION
等同于CARD_PRESENT
,CARD_REMOVAL
等同于CARD_ABSENT
。有关使用CARD_INSERTION
的示例,请参阅waitForChange()
。- 参数:
state
-国家- 返回:
- 与指定状态匹配的所有终端的不可修改列表。
- 抛出:
NullPointerException
- 如果状态为空CardException
- 如果卡片操作失败
-
getTerminal
返回具有指定名称的终端,如果不存在此类终端,则返回 null。- 参数:
name
- 终端名称- 返回:
- 具有指定名称的终端,如果不存在此类终端,则返回 null。
- 抛出:
NullPointerException
- 如果名称为空
-
waitForChange
等待在此对象的任何终端中插入或移除卡。此调用等同于调用 waitForChange(0) 。
- 抛出:
IllegalStateException
- 如果这个CardTerminals
对象不包含任何终端CardException
- 如果卡片操作失败
-
waitForChange
等待卡插入或移除此对象的任何终端或直到超时到期。此方法检查此对象的每个 CardTerminal。如果自从上次调用
waitForChange()
后将卡插入 CardTerminal 或从 CardTerminal 中取出,它会立即返回。否则,或者如果这是第一次调用此对象上的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
- 如果卡片操作失败
-