Java方法 - 采用一种方法作为论据

Die*_*ego 5 java methods

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

有关:

什么是Java中函数指针的最接近的替代品?

Dav*_*ebb 24

代码看起来像这样吗?

obj.someMethod(myVar,3,new FooObject() {
  public void bar() {
    return "baz";
  }
});
Run Code Online (Sandbox Code Playgroud)

如果是这样,那么该方法不会作为参数传递给另一个方法,而是创建一个匿名内部类,并将该类的实例作为参数传递.

在上面的示例中FooObject是一个不实现该bar()方法的抽象类.我们不是创建private class扩展,FooObject而是创建抽象类的实例,并根据其余代码提供抽象方法的实现.

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

它可以是一个非常方便的快捷方式,特别是对于Listener类,但如果你被带走并且内联方法定义太长,它可能会使你的代码很难遵循.