One problem still outstanding - Was: Two Problem with Method Reference

Howard Lovatt howard.lovatt at gmail.com
Mon Jan 10 21:06:32 PST 2011


Using the latest version from the repository (854:89631f9e86b7) on
build 1.7.0-internal-fastdebug-stephen_2010_12_23_20_53-b00. The
following:

    final ActionListener al4 = Main#print( ActionEvent );
    b1.addActionListener( al4 );
    b1.doClick();

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

Gives:

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)


---------- Forwarded message ----------
From: Howard Lovatt <howard.lovatt at gmail.com>
Date: 27 December 2010 17:14
Subject: Two Problem with Method Reference
To: lambda-dev <lambda-dev at openjdk.java.net>


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.



-- 
  -- Howard.


More information about the lambda-dev mailing list