这些代码行之间有区别吗

时间:2018-09-17 06:10:13

标签: java lambda

这些代码行之间是否有区别,最好使用什么? 谢谢

public static void main( String[] args ){
   SwingUtilities.invokeLater( () -> component.method() ); }

vs

public static void main( String[] args ) {
   SwingUtilities.invokeLater( new Runnable() {
      public void run(){
            component.method();
    }} );
}

public static void main( String[] args ) {
   SwingUtilities.invokeLater( new Runnable() {
      public void run(){
            component::method();
    }} );
}

1 个答案:

答案 0 :(得分:4)

最后一个没有通过编译。

使用任一lambda表达式

SwingUtilities.invokeLater(() -> component.method());

或方法参考

SwingUtilities.invokeLater(component::method);

比第二个短,这使得它们在Java 8和更高版本中更受欢迎。