我想以语义的方式理解泛型。例如,当我读到人们将它们称为可以制定政策的结构时,抽象类似乎适合我。当我读到人们将它们称为协作合同时,接口就会崩溃。语义上代表泛型
什么是一些好的方法来思考泛型,这可能会帮助我区分它们与其他OO结构并编写更智能的API?
我想以语义的方式理解泛型。例如,当我读到人们将它们称为可以制定政策的结构时,抽象类似乎适合我。当我读到人们将它们称为协作合同时,接口就会崩溃。语义上代表泛型
什么是一些好的方法来思考泛型,这可能会帮助我区分它们与其他OO结构并编写更智能的API?
觉得作为模板,使其他类(类似,通用的功能是用于制作其他功能模板)。类型参数用作模板中的开口:通过在其中插入具体类型,可以将泛型类或泛型函数变为真实的类或函数。类型参数“粘贴”模板上的指定孔,产生完整的定义。
这很有趣。如果我正确地理解了这一点,就好像您正在标记由调用方定义的方法/类签名摘要的一部分。暖和吗?或更冷? – cocogorilla 2013-04-06 00:49:00
@ user1902664正确,您会保留部分课程未完成,直到用户提供缺少的类型信息。 – dasblinkenlight 2013-04-06 00:58:49
接受这个答案对我来说最有帮助,让我的大脑以不同的方式思考他们。谢谢。 – cocogorilla 2013-04-06 01:36:17
您可以将它们视为对象类型的包装。你正在创建一些函数来处理实例化的任何类型的对象,所以它就像一个将为多种类型的对象执行相同工作的模板。
微软的介绍,仿制药可能有一些很好的说明以及泛型类的
http://msdn.microsoft.com/en-us/library/ms379564(v=vs.80).aspx
看来你想从自上而下的角度来理解你的理解。从定性的角度来看,它是“什么”,然后从那里推导出真正的意义。简单地学习这些不同的结构做而不是试图拿出标签是不是更容易?即从自下而上的角度来看它,并根据您现在已经了解的内容推断出您自己的定性描述。
抽象类需要你实现一个属性或方法,并且不能被实例化。它与界面有什么区别?它要求子类选择你的唯一基类。接口没有这样的限制,但要求你在实现中定义它的整个行为,而不是依赖于在基类中定义的一些行为。
同样,泛型允许您将类型作为变量引入,可以由调用方指定。这一功能类似于一般的方法参数,只是更高一级。换句话说,方法参数允许您根据调用者指定的某些输入来改变实现。通用参数允许您根据调用者指定的一些(其他)输入(即类型)来改变实现。
当然很清楚为什么List<T>
比ArrayList
更有用。我不确定为什么隐喻对理解原因有帮助。
我真的很感谢你的努力。但我不得不大声笑......我走了一半,所有的细节都转向了我大脑中的狼吞虎咽。我个人很难从这些部分获得洞(我的妻子没有)。如果我能得到一个形态...然后突然部分开始落到位。我见过很多列表
@ user1902664,但是你明白为什么'List
是的。作为列表
将它们视为类型模板。 – RBarryYoung 2013-04-06 01:00:09