模块 java.base

类 InetAddressResolverProvider

java.lang.Object
java.net.spi.InetAddressResolverProvider

public abstract class InetAddressResolverProvider extends Object
InetAddress 解析器 的服务提供商类。

解析器提供程序是 InetAddress 解析器 自定义实现的工厂。解析器定义了查找(解析)主机名和 IP 地址的操作。

解析器提供程序是此类的具体子类,它具有零参数构造函数并实现下面指定的抽象方法。

给定的 Java 虚拟机调用维护一个系统范围的解析器实例,由 InetAddress 使用。它在 VM 完全初始化后设置,当调用 InetAddress 类中的方法触发第一个查找操作时。

解析器提供程序由 InetAddress 定位并加载,以创建系统范围的解析器,如下所示:

  1. ServiceLoader 机制用于使用系统类加载器定位 InetAddressResolverProvider。提供商所在的顺序是 具体实现 。找到的第一个提供程序将用于通过调用 get(InetAddressResolverProvider.Configuration) 方法来实例化 InetAddressResolver 。返回的 InetAddressResolver 将被设置为系统范围的解析器。
  2. 如果上一步未能找到任何解析器提供程序,内置解析器 将被设置为系统范围的解析器。

如果从步骤 1 中发现的提供程序实例化自定义解析器引发错误或异常,系统范围的解析器将不会被设置,错误或异常将传播到触发查找操作的方法的调用者。否则,将使用系统范围的解析器.

实现注意事项:
InetAddress 将使用内置解析器对于在 VM 完全启动之前可能发生的任何查找操作。
自从:
18
  • 构造方法详细信息

    • InetAddressResolverProvider

      protected InetAddressResolverProvider()
      创建 InetAddressResolverProvider 的新实例。
      实现注意事项:
      建议 InetAddressResolverProvider 服务实现初始化应尽可能简单,以避免在服务提供者实例化期间可能出现死锁或类加载循环的风险。
      抛出:
      SecurityException - 如果存在安全管理器并且其 checkPermission 方法不允许 RuntimePermission("inetAddressResolverProvider")
  • 方法详情