2017-10-16 7 views
0

私は、MethodHandlesを効果的に使用する方法を私の頭脳で包んでいます。デバッグ中にMethodHandlesを実行しようとしています。 ここに私の問題を説明するいくつかのコード例があります。MethodHandleはデバッグ中に呼び出されます

public class MetricianTest { 

    public static void main(String[] args) throws Throwable { 
     final MethodHandles.Lookup lookup = MethodHandles.lookup(); 
     final MethodType mt = MethodType.methodType(String.class); 
     final MethodHandle mh = lookup.findVirtual(MHTestClass.class, "testMethod", mt); 
     System.out.println(mh.invoke(new MHTestClass())); 
    } 


    public static class MHTestClass { 
     public int testField = 1; 

     public MHTestClass() { 

     } 

     public String testMethod() { 
      return "method-value"; 
     } 
    } 
} 

コードが正常に実行されているときに動作しますが、IntelliJのデバッガを停止し、MethodHandleがにUnsupportedOperationExceptionをスロー起動しようとします。 Javadocsを見ると、MethodHandlesをリフレクションで呼び出すことはできませんが、なぜ私のプログラムでMethodHandleの呼び出しをデバッグするのか、またはその理由を理解できていないか分かりません。どんな洞察力も大いにありがとう!

答えて

0

これはまだ修正されていませんIDEA-154967、申し訳ありません。 回避策は、invokeWithArgumentsを使用することです。

+0

恐ろしい!早速のお返事ありがとうございます! – nickrobison

関連する問題