Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 1.9模块:覆盖Java.net.InetAddress时使用Java为同一类提供不同的输出_Java_Java 9_Java Module - Fatal编程技术网

Java 1.9模块:覆盖Java.net.InetAddress时使用Java为同一类提供不同的输出

Java 1.9模块:覆盖Java.net.InetAddress时使用Java为同一类提供不同的输出,java,java-9,java-module,Java,Java 9,Java Module,在java.net.InetAddress中的getAllByName()和isLoopbackAddress()方法中添加了SOP。使用下面的命令编译InetAddress.java javac --patch-module java.base=src -d mypatch src/java/net/InetAddress.java 执行下面的代码时,代码getAllByName(“localhost”)打印SOP。但另外两个没有 java --patch-module java.base

java.net.InetAddress
中的
getAllByName()
isLoopbackAddress()
方法中添加了SOP。使用下面的命令编译
InetAddress.java

javac --patch-module java.base=src -d mypatch src/java/net/InetAddress.java
  • 执行下面的代码时,代码
    getAllByName(“localhost”)
    打印SOP。但另外两个没有

    java --patch-module java.base=mypatch CustomInetAddCall.. 
    
    InetAddress addr[] = InetAddress.getAllByName("localhost"); // prints SOP.
    System.out.println([0].isLoopbackAddress()); // Doesn't
    System.out.println(addr[0].getHostAddress()); // Doesn't
    

    • 原因可能是

      • getAllByName
        是在
        InetAddress
        类中定义的API
      • isLoopbackAddress
        getHostAddress
        都有正在使用的重写实现,而不是您修补的
        InetAddress.java
        类中的实现

      为了将这些调试步骤添加到上述方法中,您可能必须使用覆盖
      InetAddress
      类实现的自定义方法实现来修补和类。

      这个问题不清楚。java.net.InetAddress的分叉/黑客版本有什么作用?@AlanBateman我只想添加(据我所知)SOP作为
      System.out.println来进行调试。除此之外,@Gopi可以更好地解释。