hg: lambda/lambda/langtools: Bug fixes:
Maurizio Cimadamore
maurizio.cimadamore at oracle.com
Mon Aug 30 03:50:17 PDT 2010
>> The latest push has a regression:
>>
>> 88: // Method References, syntax like Javadoc
>> 89: final ActionListener al4 = Main#print( ActionEvent );
>> 90: b1.addActionListener( al4 );
>> 91: b1.doClick();
>>
>> This compiles, but when run I get:
>>
>> Exception in thread "main" java.dyn.WrongMethodTypeException:
>> (Ljava/dyn/MethodHandle;Ljava/awt/event/ActionEvent;)V cannot be
>> called as (Ljava/dyn/MethodHandle;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
>> at sun.dyn.FromGeneric$A2.invoke_I2(FromGeneric.java:533)
>> at java.dyn.MethodHandle.invokeVarargs(MethodHandle.java:332)
>> at com.sun.runtime.ProxyHelper$1.invoke(ProxyHelper.java:61)
>> at $Proxy0.actionPerformed(Unknown Source)
>> at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2015)
>> at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2338)
>> 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:91)
>> at lambdas.Main.main(Main.java:22)
>>
>>
>
The following works for me (no exception):
import java.awt.event.*;
import javax.swing.JButton;
class Test {
public static void print(ActionEvent e) {
System.out.println("Hello!"); }
public static void main(String[] args) {
final ActionListener al4 = Test#print( ActionEvent );
JButton b = new JButton();
b.addActionListener(al4);
b.doClick();
b.removeActionListener(al4);
}
}
Is it close enough to your test case?
Maurizio
More information about the lambda-dev
mailing list