【问题标题】:Can a reference of an interface = null?接口的引用可以 = null 吗?
【发布时间】:2011-12-12 17:41:31
【问题描述】:

我刚才在一本书中读到了这段代码。

public class AdapterWrapper implements ListAdapter {
  ListAdapter delegate=null;

  // other code

}

ListAdapter 是一个公共接口,并且对该接口的引用已被创建并分配为空。这是有效的吗?我真的很困惑。

【问题讨论】:

    标签: java android interface reference


    【解决方案1】:

    是的,它是有效的。这只是意味着delegate 是对ListAdapter 接口的引用,它当前指向null

    您可以稍后将其指向实现ListAdapter 接口的任何 类,例如SimpleCursorAdapterWrapperListAdapter 或您想要的任何其他实现。

    当您提前不知道运行时它将是什么类时,使用接口类型作为引用很有用。因此,您只需使用指向接口的引用即可。

    【讨论】:

      【解决方案2】:

      变量有一个值,它是一个空引用。这没有什么问题。

      任何引用类型变量的值要么是对某个兼容类型的实例的引用,要么是 null - 这对于类和接口都是相同的。

      【讨论】:

      • ErichLancaster:是的,而且接口永远不会直接作为对象存在。对象总是从一些可以实现接口的类创建的。因此,您的接口变量将包含对实现此接口的类的某个对象的引用或 null。
      【解决方案3】:

      这里只是在Interface(Java) 上引用维基百科:

      Java 中的对象引用可以指定为接口类型; 在这种情况下,它们必须要么为空,要么绑定到一个对象 实现接口。

      所以按照这个定义,代码似乎是有效的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-14
        • 1970-01-01
        • 1970-01-01
        • 2011-10-03
        • 2012-10-16
        • 1970-01-01
        • 2020-04-24
        • 2015-03-28
        相关资源
        最近更新 更多