Class TerminalFactory

java.lang.Object
javax.smartcardio.TerminalFactory

public final class TerminalFactory extends Object
一个用于CardTerminal对象的工厂。它允许应用程序通过调用此类中的静态工厂方法之一(getDefault()getInstance())来获取一个TerminalFactory。 通过调用terminals()方法使用此TerminalFactory对象来访问CardTerminals。 每个TerminalFactory都有一个表示其实现方式的type。当使用getInstance()方法获取实现时,必须指定该type,并且可以通过getType()方法检索。 下列标准类型名称已被定义:
PC/SC
调用主机平台的PC/SC智能卡堆栈的实现。实现不需要参数,并且在getInstance()调用中接受“null”作为参数。
None
不提供任何CardTerminals的实现。在不支持其他实现的平台上,getDefaultType()返回NonegetDefault()返回一个None TerminalFactory的实例。无法通过调用getInstance()方法获取此类型的工厂。
未来可能会定义其他标准类型。

注意:强烈建议接受通过getInstance()方法传递初始化参数的提供程序实现尽可能使用Properties对象作为基于字符串名称-值对的参数表示。这样可以使应用程序更容易与多个提供程序进行交互,而不是每个提供程序都使用不同的提供程序特定类作为参数。

TerminalFactory利用可扩展的服务提供程序框架。希望添加新实现的服务提供程序应查看TerminalFactorySpi类以获取更多信息。

自:
1.6
参见:
  • Method Details

    • getDefaultType

      public static String getDefaultType()
      获取默认的TerminalFactory类型。

      确定方式如下:当初始化此类时,将检查系统属性javax.smartcardio.TerminalFactory.DefaultType。如果已设置,将通过调用getInstance(String,Object)方法并将null作为params的值传递来实例化此类型的TerminalFactory。如果调用成功,则该类型将成为默认类型,工厂将成为默认工厂。

      如果系统属性未设置或由于任何原因getInstance()调用失败,则系统将默认使用特定实现的默认类型和TerminalFactory。

      返回:
      默认的TerminalFactory类型
    • getDefault

      public static TerminalFactory getDefault()
      返回默认的TerminalFactory实例。查看getDefaultType()获取更多信息。

      始终可以使用默认的TerminalFactory。但是,根据实现方式,它可能不提供任何终端。

      返回:
      默认的TerminalFactory
    • getInstance

      public static TerminalFactory getInstance(String type, Object params) throws NoSuchAlgorithmException
      返回使用指定参数初始化的指定类型的TerminalFactory。

      此方法遍历已注册的安全提供程序列表,从最首选的提供程序开始。返回封装了支持指定类型的第一个提供程序的TerminalFactorySpi实现的新TerminalFactory对象。

      请注意,已注册提供程序的列表可以通过Security.getProviders()方法检索。

      TerminalFactory使用指定的参数对象进行初始化。所需参数的类型可能因不同类型的TerminalFactory而异。

      实现注意:
      JDK参考实现另外使用jdk.security.provider.preferred Security属性来确定指定算法的首选提供程序顺序。这可能与Security.getProviders()返回的提供程序顺序不同。
      参数:
      type - 请求的TerminalFactory类型
      params - 传递给TerminalFactorySpi实现的参数,如果不需要参数,则为null
      返回:
      指定类型的TerminalFactory
      抛出:
      NullPointerException - 如果type为null
      NoSuchAlgorithmException - 如果没有提供者支持指定类型的TerminalFactorySpi
    • getInstance

      public static TerminalFactory getInstance(String type, Object params, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
      返回使用指定参数初始化的指定类型的TerminalFactory。

      返回封装了来自指定提供程序的TerminalFactorySpi实现的新TerminalFactory对象。指定的提供程序必须在安全提供程序列表中注册。

      请注意,已注册提供程序的列表可以通过Security.getProviders()方法检索。

      TerminalFactory使用指定的参数对象进行初始化。所需参数的类型可能因不同类型的TerminalFactory而异。

      参数:
      type - 请求的TerminalFactory类型
      params - 传递给TerminalFactorySpi实现的参数,如果不需要参数,则为null
      provider - 提供程序的名称
      返回:
      指定类型的TerminalFactory
      抛出:
      NullPointerException - 如果type为null
      IllegalArgumentException - 如果provider为null或为空字符串
      NoSuchAlgorithmException - 如果指定提供程序不提供指定类型的TerminalFactorySpi实现
      NoSuchAlgorithmException - 如果找不到指定类型的TerminalFactory
      NoSuchProviderException - 如果找不到指定提供程序
    • getInstance

      public static TerminalFactory getInstance(String type, Object params, Provider provider) throws NoSuchAlgorithmException
      返回使用指定参数初始化的指定类型的TerminalFactory。

      返回封装了来自指定提供程序对象的TerminalFactorySpi实现的新TerminalFactory对象。请注意,指定的提供程序对象不必在提供程序列表中注册。

      TerminalFactory使用指定的参数对象进行初始化。所需参数的类型可能因不同类型的TerminalFactory而异。

      参数:
      type - 请求的TerminalFactory类型
      params - 传递给TerminalFactorySpi实现的参数,如果不需要参数,则为null
      provider - 提供程序
      返回:
      指定类型的TerminalFactory
      抛出:
      NullPointerException - 如果type为null
      IllegalArgumentException - 如果provider为null
      NoSuchAlgorithmException - 如果指定提供程序不提供指定类型的TerminalFactorySpi实现
    • getProvider

      public Provider getProvider()
      返回此TerminalFactory的提供程序。
      返回:
      此TerminalFactory的提供程序。
    • getType

      public String getType()
      返回此TerminalFactory的类型。这是调用返回此对象的getInstance()方法中指定的值。
      返回:
      此TerminalFactory的类型
    • terminals

      public CardTerminals terminals()
      返回一个封装了此工厂支持的终端的新CardTerminals对象。查看CardTerminals类的类注释,了解如何共享和重用返回的对象。
      返回:
      一个封装了此工厂支持的终端的新CardTerminals对象。
    • toString

      public String toString()
      返回此TerminalFactory的字符串表示形式。
      覆盖:
      toString 在类 Object
      返回:
      此TerminalFactory的字符串表示形式。