java - 这两段代码有什么区别?

标签 java

我无法理解为什么以下代码之一可以编译,而另一部分则不能。

无法编译的(编译器说方法 KeyBidings() 需要返回类型):

public KeyBidings(){
    Action rightAction = new AbstractAction(){
        public void actionPreformed(ActionEvent e){
            x+=10;
            drawPanel.repaint();
        }
    };
    Action leftAction = new AbstractAction(){
        public void actionPreformed(ActionEvent e){
            x-=10;
            drawPanel.repaint();
        }
    };

        InputMap inputMap = drawPanel.getInputMap(JPanel.WHEN_IN_FOCUSED_WINDOW);
        ActionMap actionMap = drawPanel.getActionMap();

    inputMap.put(KeyStroke.getKeyStroke("RIGHT"), "rightAction");
    actionMap.put("rightAction", rightAction);
    inputMap.put(KeyStroke.getKeyStroke("LEFT"), "leftAction");
    actionMap.put("leftAction", leftAction);

    add(drawPanel);
    pack();
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setSize(640, 480);
    setTitle("Game");
    setLocationRelativeTo(null);
    setVisible(true);
}

并且编译得很好:

public KeyBidings(){
    Action rightAction = new AbstractAction(){
        public void actionPerformed(ActionEvent e) {
            x +=10;
            drawPanel.repaint();
        }
    };

        InputMap inputMap = drawPanel.getInputMap(JPanel.WHEN_IN_FOCUSED_WINDOW);
        ActionMap actionMap = drawPanel.getActionMap();

    inputMap.put(KeyStroke.getKeyStroke("RIGHT"), "rightAction");
    actionMap.put("rightAction", rightAction);

    add(drawPanel);

    pack();
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setLocationRelativeTo(null);
    setVisible(true);
}

编辑:我不知道构造函数和方法之间的区别,但现在我有另一个问题:https://gyazo.com/cd3c21a8562589451814903febaf89fe

这里有什么问题吗?我已经包含了下面两个类的源代码。

源代码1:http://pastebin.com/vwNtJZEG 源代码2:http://pastebin.com/nL4SbtkM

最佳答案

第二个是名为 KeyBidings 的类的构造函数,而第一个是其他类的方法,但缺少返回类型。

阅读the tutorial about constructors .

请注意,编译器并没有说该方法可能不是公共(public)的,正如您的标题所示。它说它必须有一个返回类型。这是完全不同的。

关于java - 这两段代码有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36460544/

相关文章:

java - 记录数据、在命令行中输入数据、限制整数长度

mysql - 使用 MySQL 数据库为 Java 应用程序制作安装程序

java - 如何在同一行打印 bool 和 double?

java - 在抽屉导航中跨多个组实现多项选择

java - ArrayList.add 方法的时间复杂度是多少?

javascript - 使用 Jackson 在 Javascript 和 Java 之间传输 JSON

java - 在android中点击 Canvas 中的位图图像

java - 取消引用可能吗?

java - 使用 java.nio.file.Paths 接口(interface)时缺少方案 (IllegalArgumentException)

运行时的 Java 解释器代码