如何在不实例化任何对象的情况下使用接口方法?

时间:2017-10-06 18:11:49

标签: java

为什么下面的代码片段没有抛出任何编译错误?我还没有实例化界面选择器。

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;

    }

我错过了什么基本的东西?提前谢谢。

1 个答案:

答案 0 :(得分:0)

您不会收到编译器错误。你对界面的编程,这很好。 totalValues的调用者必须传递Selector的实现。就像他将通过List的实现一样。

你基本上说“如果你告诉我如何'选择'要包括在总数中的值,我会创建总值。”