gpt4 book ai didi

java - 通用编程有必要吗?

转载 作者:行者123 更新时间:2023-12-01 13:35:05 24 4
gpt4 key购买 nike

我正在阅读this book ,它讨论了静态类型,在稍微阅读了这一章之后,我理解为:

  • OOP 中的静态类型定义为显式声明对象所属的类,以便它是预先确定的(在编译时、运行时之前,即 Foo var )。
  • 与此相反的是泛型编程,其中对象的实际 ID 尚未确定(即 id var )。
  • 需要记住的是,静态类型从来都不是必需的(直接来自书中),它只会提高可读性,并通过显示对象可以做什么、不能做什么以及它可以“看到”什么来简化调试过程。
  • 但是,对于数组之类的东西,有时需要通用编程,您可能需要......这就是我感到困惑的地方。它真的有必要吗?

我知道在 Java 中你可以强制数组中包含的对象类型,例如:ArrayList<Double> ,但在 Objective-C 中,我对此做了很少的研究,没有这样的方法,因此,所有 NSArray包含 id s 在编译时。

如果这个功能(奇怪地称为泛型,尽管它是静态类型而不是泛型类型)在 Objective-C 中不可用,这是否意味着泛型编程有时是必要的?

最佳答案

是的,每当您需要编写需要在编译时不知道类型的情况下对多种类型进行操作的东西时,通用类型是必要的。

虽然 Objective-C 本身不包含泛型,但 Ids 和 void* 基本上是相同的东西。您可以编写一个接受 void* 或 Id 的方法并对其进行一些处理。在调用该方法之前,您需要对要操作的对象进行显式转换为 void*。

编辑:例如,如果您想编写一个方法来制作任何类型对象的浅拷贝,您会怎么做?您必须执行类似 copy(void* src,void* dest, int size) 的操作。如果没有泛型,就无法做到这一点。

关于java - 通用编程有必要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21347728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com