Two Problem with Method Reference

Howard Lovatt howard.lovatt at gmail.com
Sun Dec 26 22:14:22 PST 2010


Hi,

I have found a coup[le of problems with the latest version of JDK 7 in
the Mercurial repository. For:

95:    final ActionListener al4 = Main#print( ActionEvent );
96:    b1.addActionListener( al4 );
97:    b1.doClick();

and:

  private static void print( final ActionEvent notUsed ) {
    out.println( "Main.print method called" );
  }

It compiles OK, but when run I get:

Exception in thread "main" java.lang.InternalError: JVM cannot find
invoker for (ActionEvent)void
	at sun.dyn.Invokers.exactInvoker(Invokers.java:74)
	at sun.dyn.Invokers.genericInvoker(Invokers.java:82)
	at java.dyn.MethodHandle.invokeWithArguments(MethodHandle.java:420)
	at java.dyn.MethodHandle.invokeVarargs(MethodHandle.java:468)
	at com.sun.runtime.ProxyHelper$1.invoke(ProxyHelper.java:61)
	at $Proxy0.actionPerformed(Unknown Source)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2019)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2342)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
	at javax.swing.AbstractButton.doClick(AbstractButton.java:356)
	at lambdas.Main.lambdas(Main.java:97)
	at lambdas.Main.main(Main.java:23)

If I remove static from the method definition:

  private void print( final ActionEvent notUsed ) {
    out.println( "Main.print method called" );
  }

Then when run I get:

Exception in thread "main" java.dyn.WrongMethodTypeException: cannot
convert to (Object)Object: print(Main,ActionEvent)void
	at java.dyn.MethodHandles.convertArguments(MethodHandles.java:1091)
	at java.dyn.MethodHandle.asType(MethodHandle.java:507)
	at java.dyn.MethodHandle.invokeWithArguments(MethodHandle.java:417)
	at java.dyn.MethodHandle.invokeVarargs(MethodHandle.java:468)
	at com.sun.runtime.ProxyHelper$1.invoke(ProxyHelper.java:61)
	at $Proxy0.actionPerformed(Unknown Source)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2019)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2342)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
	at javax.swing.AbstractButton.doClick(AbstractButton.java:356)
	at lambdas.Main.lambdas(Main.java:97)
	at lambdas.Main.main(Main.java:23)

Hope everyone is having a good holiday (I count playing with JDK 7 as
relaxation!),

  -- Howard.


More information about the lambda-dev mailing list