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
类中定义的APIInetAddress
和isLoopbackAddress
都有正在使用的重写实现,而不是您修补的getHostAddress
类中的实现InetAddress.java
为了将这些调试步骤添加到上述方法中,您可能必须使用覆盖
InetAddress
类实现的自定义方法实现来修补和类。这个问题不清楚。java.net.InetAddress的分叉/黑客版本有什么作用?@AlanBateman我只想添加(据我所知)SOP作为System.out.println来进行调试。除此之外,@Gopi可以更好地解释。