【发布时间】:2017-10-06 18:11:49
【问题描述】:
为什么下面的代码 sn-p 没有抛出任何编译错误?我还没有实例化接口选择器。
public interface Selector {
public boolean pick(int value);
}
public static int totalValues(List<Integer> values, Selector selector) {
int result = 0;
for (int i : values) {
if(selector.pick(i)) {
result += i;
}
}
return result;
}
我缺少什么基本的东西?提前致谢。
【问题讨论】:
-
你没有,但是调用你方法的人必须这样做。
-
编译器假定某个类实现了接口。你真的没有实例化任何
Selector就使用了那个方法吗? -
任何实现
Selector的类都可以作为方法参数传递。 -
是的,明白了。虽然非常愚蠢的问题。谢谢
-
这并不是您要问的,但它可能会帮助您了解当您拥有interface as a method parameter in Java 时发生了什么。
标签: java