Module  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对象。

    • 方法详细信息

      • list

        public List<CardTerminal> list​()
                                throws CardException
        返回所有可用终端的不可修改列表。
        结果
        所有可用终端的不可修改的列表。
        异常
        CardException - 如果卡操作失败
      • getTerminal

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