在Oracle Javadocs for Java 8中,指定InterfaceType具有名为invokeMethod
的方法。
但是,当我查看我的系统时,我在界面中看不到任何此类方法:
kshitiz:/usr/lib/jvm/jdk1.8.0/lib$ javap -classpath tools.jar com.sun.jdi.InterfaceType
Compiled from "InterfaceType.java"
public interface com.sun.jdi.InterfaceType extends com.sun.jdi.ReferenceType {
public abstract java.util.List<com.sun.jdi.InterfaceType> superinterfaces();
public abstract java.util.List<com.sun.jdi.InterfaceType> subinterfaces();
public abstract java.util.List<com.sun.jdi.ClassType> implementors();
}
Java版本检查:
kshitiz:/usr/lib/jvm/jdk1.8.0/lib$ java -version
java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)
我错过了什么?
答案 0 :(得分:2)
在测试不同版本后,似乎Oracle已在次要更新u40
中添加了该方法。以下版本没有这种方法。
在JDK上1.8.0_40
:
Compiled from "InterfaceType.java"
public interface com.sun.jdi.InterfaceType extends com.sun.jdi.ReferenceType {
public abstract java.util.List<com.sun.jdi.InterfaceType> superinterfaces();
public abstract java.util.List<com.sun.jdi.InterfaceType> subinterfaces();
public abstract java.util.List<com.sun.jdi.ClassType> implementors();
public com.sun.jdi.Value invokeMethod(com.sun.jdi.ThreadReference, com.sun.jdi.Method, java.util.List<? extends com.sun.jdi.Value>, int) throws com.sun.jdi.InvalidTypeException, com.sun.jdi.ClassNotLoadedException, com.sun.jdi.IncompatibleThreadStateException, com.sun.jdi.InvocationException;
}
我对此感到惊讶,因为这种结构变化应该只发生在主要版本之间,而不是在次要版本之间。但是,com.sun
包被视为私有Oracle API和subject to change anytime。