模块  java.smartcardio
软件包  javax.smartcardio

Class CardTerminals


  • public abstract class CardTerminals
    extends Object
    TerminalFactory支持的终端集。 此类允许应用程序枚举可用的CardTerminals,获取特定的CardTerminal,或等待插入或删除卡。

    此类是多线程安全的,可以同时由多个线程使用。 但是,该对象跟踪每个终端的卡存在状态。 如果需要独立调用waitForChange(),则应使用多个对象。

    应用程序可以通过调用TerminalFactory.terminals()获取此类的实例。

    从以下版本开始:
    1.6
    另请参见:
    TerminalFactoryCardTerminal
    • 构造方法详细信息

      • CardTerminals

        protected CardTerminals()
        构造一个新的CardTerminals对象。

        此构造函数仅由子类调用。 应用程序应调用TerminalFactory.terminals()以获取CardTerminals对象。

    • 方法详细信息

      • getTerminal

        public CardTerminal getTerminal​(String name)
        返回具有指定名称的终端,如果不存在此类终端,则返回null。
        参数
        name - 终端名称
        结果
        具有指定名称的终端;如果不存在此类终端,则为null。
        异常
        NullPointerException - 如果name为null
      • 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 - 如果卡操作失败