传递包含方法的参数。JAVA

传递包含方法的参数。JAVA,java,Java,您能解释一下将这样一个参数传递给addActionListener方法的方法是什么吗?我知道创建了JButton类型的按钮变量,并定义了事件侦听器。我不太清楚addActionListener参数,即其中的actionPerformed方法定义。我在哪里可以准备好这种方法?谢谢 JButton button = new JButton("New button"); button.addActionListener(new ActionListener() { public void ac

您能解释一下将这样一个参数传递给addActionListener方法的方法是什么吗?我知道创建了JButton类型的按钮变量,并定义了事件侦听器。我不太清楚addActionListener参数,即其中的actionPerformed方法定义。我在哪里可以准备好这种方法?谢谢

JButton button = new JButton("New button");
button.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent arg0) {
        System.out.println("Hello");
    }
});

这里发生的是addActionListener将实现ActionListener的对象作为参数

您正在创建一个实现ActionListener接口的方法,并在其中定义ActionListener接口所需的actionPerformed方法


这个匿名类被实例化为一个对象,并且该对象被传递到addActionListener方法。

这里发生的是addActionListener将实现ActionListener的对象作为参数

您正在创建一个实现ActionListener接口的方法,并在其中定义ActionListener接口所需的actionPerformed方法

这个匿名类被实例化为一个对象,该对象被传递到addActionListener方法。

在button.addActionListener上,实现的类被称为。这个类只存在于addActionListener方法中,其他人不知道它。基本上,您正在创建ActionListener,即使它是传递给addActionListener的接口

由于ActionListener是一个接口,因此必须实现actionPerformed方法。当JButton发生事件时,JButton中的侦听器将通过传递发生的事件ActionEvent的actionPerformed方法得到通知。 只是维基百科的另一个额外注释:

还使用匿名内部类 其中事件处理代码仅为 由一个组件使用,因此 不需要命名引用

这避免了一个大的单片计算机 具有多个if-else分支的方法 以确定事件的来源。 这类代码经常被考虑 混乱与阶级内部的变化 在所有方面都被认为是更好的 问候

这基本上只是一个额外的答案。

在button.addActionListener上,实现的类称为。这个类只存在于addActionListener方法中,其他人不知道它。基本上,您正在创建ActionListener,即使它是传递给addActionListener的接口

由于ActionListener是一个接口,因此必须实现actionPerformed方法。当JButton发生事件时,JButton中的侦听器将通过传递发生的事件ActionEvent的actionPerformed方法得到通知。 只是维基百科的另一个额外注释:

还使用匿名内部类 其中事件处理代码仅为 由一个组件使用,因此 不需要命名引用

这避免了一个大的单片计算机 具有多个if-else分支的方法 以确定事件的来源。 这类代码经常被考虑 混乱与阶级内部的变化 在所有方面都被认为是更好的 问候


这基本上只是一个额外的答案。

要从字面上回答您的问题,您可以将方法作为参数传递

Method method = clazz.getMethod("method-name", method-parameter.class);
yourObject.call(method);

要逐字回答您的问题,您可以将方法作为参数传递

Method method = clazz.getMethod("method-name", method-parameter.class);
yourObject.call(method);

简而言之,从Java爱好者的角度来看,这可能是一种冒犯:这是一种对Java的黑客攻击,缺乏作为一等公民的imo非常基本和非常有用的功能特性。总有一天Java会有闭包。。。。JDK 8 2012:PI猜测它将在20年代初在Java 10中流行起来。简而言之,从Java爱好者的角度来看,它可能是一种攻击:它是一种围绕Java的黑客,缺乏imo非常基本和非常有用的功能,作为一等公民。有一天Java将有闭包。。。。JDK 8 2012:PI猜测它将在20世纪初在Java10中实现。这被认为是一种好方法,还是最好明确定义实现ActionListener接口的内部类?对ActionListener使用匿名类是非常常见的,而且在我看来更清楚,因为它将按钮的功能保留在一个地方,但也因为它只会使用一次,在那个特别的地方。你不希望每个按钮都有一个单独的命名内部类,因为你的名称空间混乱不堪。不过,在我看来,与其他具有一流函数和闭包/lambda的语言相比,这是一个混乱的解决方案,这将允许您简单地定义一个代码块并将其传递到函数中,而不是围绕它构建一个完整的类。尽管如此,由于Java还不能做到这一点,这一点也不存在。如果你开始研究其他语言做事情的方式,你需要记住一点。里斯,你需要多长时间
希望您的匿名类引用可用吗?显然违反了O'Reilly在北美的版权,虽然可能不在乌克兰。嗯,没有注意到,这只是Google上“匿名类java”的第一个结果。信息是正确的,所以我同意了。值得注意的是,同样的材料也可以在网上找到。你认为我应该把链接改成那个吗?谢谢。这被认为是一种好方法,还是最好明确定义实现ActionListener接口的内部类?对ActionListener使用匿名类是非常常见的,而且在我看来更清楚,因为它将按钮的功能保留在一个地方,但也因为它只会使用一次,在那个特别的地方。你不希望每个按钮都有一个单独的命名内部类,因为你的名称空间混乱不堪。不过,在我看来,与其他具有一流函数和闭包/lambda的语言相比,这是一个混乱的解决方案,这将允许您简单地定义一个代码块并将其传递到函数中,而不是围绕它构建一个完整的类。尽管如此,由于Java还不能做到这一点,这一点也不存在。如果你开始研究其他语言的工作方式,请记住一点。Reese,你希望你的匿名类引用可以使用多久?显然违反了O'Reilly在北美的版权,虽然可能不在乌克兰。嗯,没有注意到,这只是Google上“匿名类java”的第一个结果。信息是正确的,所以我同意了。值得注意的是,同样的材料也可以在网上找到。你认为我应该把链接改成那个吗。