当前位置: 首页 > 知识库问答 >
问题:

ToLookup方法返回查找类吗?

终弘厚
2023-03-14

这个问题的答案似乎很简单。毕竟,如果您从IEnumerable接口检查Tolookup方法的文档,那么它会说它返回Lookup类,而Lookup类的文档,那么它会说创建它的唯一方法是通过Tolookup方法。但是,如果您查看Tolookup方法的类型,那么您很快就会注意到它并不返回lookup类。相反,它返回ilookup接口的实例。

所以我的问题是:它是否真的返回lookup类?如果它真的返回了那个类,那么为什么即使文档中说它返回了这个类,也要将它作为接口返回呢?编写(lookup )foo.tolookup(bar) 是否安全,或者是否有人编写tolookup的实现,该实现实际上返回一个不同的类,而不是lookup,该类也不能强制转换给它?

共有1个答案

卢黎昕
2023-03-14

文档并不总是完美的,这里也是如此。实际上,它返回ilookup 的一个实例,当前实现该接口的唯一可用类是lookup 。因此,每当他们决定返回其他内容时,他们就会破坏文档,可能还会破坏现有的代码,这些代码假定始终存在lookup

因此,如果希望安全起见,请使用varilookup 声明类型。

通常,返回一个接口而不是具体的实现更好,这样您就可以在不破坏任何代码的情况下自由地更改实现。

 类似资料:
  • 这似乎可行,但我希望有人能证实这一点: 我的实体有一个基类BaseEntity。 然后我有几个实体,比如从BaseEntity扩展的A、B和C。此外,我还有一个定义为: 现在,我似乎可以使用这个存储库单独查询表A、B或C,只需更改返回类型。例如: 将导致仅从表B中选择行的查询。 真的是这样吗?

  • 问题内容: 也许这是一个愚蠢的问题,但是有没有办法找到所有返回特定类型的函数(在标准库或GOPATH中)? 例如,有许多函数使用io.Writer作为参数。现在,我想知道如何创建io.Writer,并且有很多方法可以做到这一点。但是,如何能轻松地找到所有方法而又无需猜测软件包并仔细查看所有方法以找到返回io.Writer(或我追随的其他任何类型)的方法? 编辑: 我应该扩展我的问题,以查找实现特定

  • 问题内容: 这就是我想要做的。使用反射,我想获取所有方法及其返回类型(非泛型)。我一直在这样做。但是,当我遇到返回类型未知的方法时,我遇到了限制。 我如何知道方法的返回类型是否通用?我没有奢求在运行时拥有对象。我正在尝试使用Google 或使用抽象类来获取类型信息。我想关联到对象的方法。 有人认为Java不保留通用信息。在这种情况下,为什么第一次强制转换有效而第二次强制转换无效。 任何帮助表示赞赏

  • 问题内容: 谁能帮助我在JAVA中找到方法的返回类型。我试过了 但不幸的是,它不起作用。请指导我。 输出: 不是int :: int 问题答案: 方法返回 你可以试试:

  • 问题内容: 如何获取使用SQL Server的SQL查询返回的列数? 例如,如果我有如下查询: 它应该返回表A1中的总列数+表A2中的总列数。但是查询可能会更复杂。 问题答案: 这是一种方法: 您可以通过创建视图来执行类似的操作。

  • 我正在Java开发一个纸牌游戏,我试图比较hashMap中的键和ArrayList中的元素(两者都是对象)。hashCode()和equals()被重写,但出现了一个错误,我不确定它的哪一部分是错误的。 这是纸牌课 我们要做的比较 错误:点击查看错误图片