我遇到了一些我不能在这里分享的代码,但它声明一个方法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/