Java 方法 - 将方法作为参数

标签 java methods

我遇到了一些我不能在这里分享的代码,但它声明一个方法WITHIN另一个方法的参数列表。我什至不知道那是可能的。我真的不明白为什么要这样做。有人可以向我解释一些您作为程序员可能会这样做的用途吗? (注意:由于我无法显示代码,所以我一般不希望得到上下文中的解释)

相关:

What's the nearest substitute for a function pointer in Java?

最佳答案

代码看起来像这样吗?

obj.someMethod(myVar,3,new FooObject() {
  public void bar() {
    return "baz";
  }
});

如果是这样,则该方法不会作为参数传递给其他方法,而是一个 anonymous inner class正在创建,并且该类的一个实例作为参数传递。

在上面的例子中,FooObject 是一个没有实现 bar() 方法的抽象类。我们没有创建扩展FooObject私有(private)类,而是创建抽象类的实例,并提供与其余代码一致的抽象方法的实现。

您不能创建抽象类的实例,因此我们必须提供缺少的方法来创建完整的类定义。由于这个新类是动态创建的,所以它没有名称,因此是匿名。因为它是在另一个类中定义的,所以它是一个匿名的内部类。

它可以是一个非常方便的快捷方式,尤其是对于 Listener 类,但如果您走神并且内联方法定义太长,它会使您的代码难以理解。

关于Java 方法 - 将方法作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/887444/

相关文章:

java - 在 Jaxb 中获取元素的动态属性

java - 如何最大限度地减少层次结构的代码量

Java 计数器即将耗尽

java - 如何将未定义数量的方法作为参数传递给另一个方法

javascript - MurmurHash3_32 Java 返回负数

java - 检查距中心一定距离内有多少人

java - Struts基本类加载问题

java - 无法进行非静态引用

ruby-on-rails - 帮助程序与 Controller 中的 ruby​​ on rails 应用程序范围的方法?

Python 方法访问器在每次访问时创建新对象?