这个类是多线程安全的,可以被多个线程同时使用。但是,此对象会跟踪其每个终端的卡存在状态。如果需要对 waitForChange() 的独立调用,则应使用多个对象。
应用程序可以通过调用 TerminalFactory.terminals() 来获取此类的实例。
- 自从:
- 1.6
- 参见:
-
内部类总结
内部类 -
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述getTerminal(String name) 返回具有指定名称的终端,如果不存在此类终端,则返回 null。list()返回所有可用终端的不可修改列表。abstract List<CardTerminal>list(CardTerminals.State state) 返回与指定状态匹配的所有终端的不可修改列表。void等待在此对象的任何终端中插入或移除卡。abstract booleanwaitForChange(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- 如果卡片操作失败
-