【问题标题】:How is it possible to use interface method without instantiating any object?如何在不实例化任何对象的情况下使用接口方法?
【发布时间】: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


【解决方案1】:

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

您的基本意思是“如果您告诉我如何“挑选”要包含在总数中的值,我将创建总值。”

【讨论】:

    猜你喜欢
    • 2020-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-05
    相关资源
    最近更新 更多