【发布时间】:2016-06-23 13:10:21
【问题描述】:
我很久没有写 Java 了,需要一些(也许)简单的帮助。
所以我得到了这个Class,其中声明了Interface:
public class test(){
interface Checker(){
public check();
}
public someFunction(List param1, Checker param2){
//[do something here]
}
...
public static void main (...){
someFunction(List param1, new Checker(){
...
//[implementation of interface]
...
});
}
所以我的问题是,(并且实际代码工作正常)
-
我真的不明白为什么方法
someFunction();需要Interface作为参数 -
我也不明白为什么我可以将一个接口的实例传递给那个函数
(inmain()). The second argument that I'm passing thesomeFunction();`,是一个接口的实例,对? 好吧,我在想的是,它实际上是某种匿名类,因此它可能是可能的。
但正如我所说,我已经有一段时间没有编写 java 代码了,还没有找到答案,所以如果有人能向我解释这段代码为什么以及如何工作,我将不胜感激。
【问题讨论】:
-
这不会编译。
check缺少返回类型。 -
1.因为它是这样写的。 2. 是的,这是匿名类。
-
针对接口实现是针对紧密耦合的常见做法。 someFunction 不在乎您如何“检查”。您可以通过注入 Checker 的不同实现来配置
someFunction的行为。看排序:通过注入 Comparator 可以翻转排序顺序。 -
“有人可以解释一下这段代码为什么以及如何工作” --- 这很简单:它不是
标签: java class interface anonymous