java – 缺少com.sun.jdi.InterfaceType中的invokeMethod

在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)

我错过了什么?

最佳答案 在测试了不同的版本之后,似乎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.

点赞