JAVA 中的 -> 是什么意思?

时间:2025-01-21 07:23:37

在《JAVA核心编程》中,有一段这样的代码

import .*;
import .*;
import ;
 
public class ImageViewer {
    public static void main(String[] args){
        (() -> {
            JFrame frame = new ImageViewerFrame();
            ("ImageViewer");
            (JFrame.EXIT_ON_CLOSE);
            (true);
 
        });
    }
}
class ImageViewerFrame extends JFrame{
    private JLabel label;
    private JFileChooser chooser;
    private static final int DEFAULT_WIDTH = 300;
    private static final int DEFAULT_HEIGHT = 400;
 
    public ImageViewerFrame(){
        setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
 
        label = new JLabel();
        add(label);
 
        chooser = new JFileChooser();
        (new File("."));
 
        JMenuBar menuBar = new JMenuBar();
        setJMenuBar(menuBar);
        JMenu menu = new JMenu();
        (menu);
 
        JMenuItem openItem = new JMenuItem("open");
        (openItem);
        (Event -> {
            int result = (null);
 
            if (result == JFileChooser.APPROVE_OPTION){
                String name = ().getPath();
                (new ImageIcon(name));
            }
        });
 
        JMenuItem exitItem = new JMenuItem("exit");
        (exitItem);
        (Event -> (0));
    }
}

可以看到两处这样的代码

() -> {
            JFrame frame = new ImageViewerFrame();
            ("ImageViewer");
            (JFrame.EXIT_ON_CLOSE);
            (true);
 
        }
Event -> {
            int result = (null);
 
            if (result == JFileChooser.APPROVE_OPTION){
                String name = ().getPath();
                (new ImageIcon(name));
            }

Java8的lambda表达式。就是匿名函数。

上面那一段可以看成如下:

(new Runnable() {
            public void run() {
                JFrame frame = new ImageViewerFrame();
                ("ImageViewer");
                (JFrame.EXIT_ON_CLOSE);
                (true);
            }
        });

下面一段可以看成:

(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                int result = (null);
 
                if (result == JFileChooser.APPROVE_OPTION){
                    String name = ().getPath();
                    (new ImageIcon(name));
                }
            }
        });

只不过java自动帮你翻译了一下