类 TerminalFactory

java.lang.Object
javax.smartcardio.TerminalFactory

public final class TerminalFactory extends Object
CardTerminal 对象的工厂。它允许应用程序
  • 通过调用此类中的静态工厂方法之一(getDefault()getInstance())获得 TerminalFactory。
  • 通过调用 terminals() 方法,使用此 TerminalFactory 对象访问 CardTerminals。

每个 TerminalFactory 都有一个 type 指示它是如何实现的。当使用 getInstance() 方法获取实现时必须指定它,并且可以通过 getType() 方法检索。

定义了以下标准类型名称:

PC/SC
调用主机平台的 PC/SC 智能卡堆栈的实现。实现不需要参数并接受“null”作为 getInstance() 调用中的参数。
None
不提供任何 CardTerminals 的实现。在不支持其他实现的平台上,getDefaultType() 返回 NonegetDefault() 返回 None TerminalFactory 的实例。这种类型的工厂不能通过调用 getInstance() 方法获得。
将来可能会定义其他标准类型。

Note: 强烈建议通过 getInstance() 方法接受初始化参数的提供程序实现尽可能使用 Properties 对象作为基于字符串名称-值对的参数的表示。与每个提供者使用不同的提供者特定类作为参数相比,这允许应用程序更容易地与多个提供者进行互操作。

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

自从:
1.6
参见:
  • 方法详情

    • getDefaultType

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

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

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

      返回:
      默认的 TerminalFactory 类型
    • getDefault

      public static TerminalFactory  getDefault()
      返回默认的 TerminalFactory 实例。有关详细信息,请参阅 getDefaultType()

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

      返回:
      默认的 TerminalFactory
    • getInstance

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

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

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

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

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

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

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

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

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

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

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

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

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

      参数:
      type - 请求的 TerminalFactory 的类型
      params - 传递给 TerminalFactorySpi 实现的参数,如果不需要参数则为 null
      provider - 供应商
      返回:
      指定类型的 TerminalFactory
      抛出:
      NullPointerException - 如果类型为空
      IllegalArgumentException - 如果提供者为空
      NoSuchAlgorithmException - 如果指定类型的 TerminalFactorySpi 实现无法从指定的 Provider 获得
    • 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 的字符串表示形式。