泛型的泛型的好处,泛型的作用是什么?

2020-11-22 07:11:03 字数 5794 阅读 6147

1楼:百度用户

泛型是c#2.0的一个新增加的特性,它为使用c#语言编写面

向对象程序增加了极大的效力和灵活性。不会强行对值类型进行装箱和拆箱,或对引用类型进行向下强制类型转换,所以性能得到提高。通过知道使用泛型定义的变量的类型限制,编译器可以在一个高得多的程度上验证类型假设,所以泛型提高了程序的类型安全。

它允许程序员将一个实际的数据类型的规约延迟至泛型的实例被创建时才确定。泛型为开发者提供了一种高性能的编程方式,能够提高**的重用性,并允许开发者编写非常优雅的解决方案。

泛型类和泛型方法同时具备可重用性、类型安全和效率,这是非泛型类和非泛型方法无法具备的。泛型通常用与集合以及作用于集合的方法一起使用。.*** framework 2.

0 版类库提供一个新的命名空间 system.collections.generic,其中包含几个新的基于泛型的集合类。

建议面向 2.0 版的所有应用程序都使用新的泛型集合类,而不要使用旧的非泛型集合类,如 arraylist。有关更多信息,请参见 .

*** framework 类库中的泛型(c# 编程指南)。

当然,也可以创建自定义泛型类型和方法,以提供自己的通用解决方案,设计类型安全的高效模式。下面的**示例演示一个用于演示用途的简单泛型链接列表类。(大多数情况下,应使用 .

*** framework 类库提供的 list<(of <(t>)>) 类,而不是自行创建类。)在通常使用具体类型来指示列表中存储的项的类型的场合,可使用类型参数 t。其使用方法如下:

在 addhead 方法中作为方法参数的类型。

在 node 嵌套类中作为公共方法 getnext 和 data 属性的返回类型。

在嵌套类中作为私有成员数据的类型。

注意,t 可用于 node 嵌套类。如果使用具体类型实例化 genericlist(例如,作为 g // type parameter t in angle bracketspublicclass

public class genericlist

private node next;

public node next

set}// t as private member data type

private t data;

// t as return type of property

public t data

set }}

private node head;

// constructor

public genericlist()

// t as method parameter type:

public void addhead(t t)

public ienumerat***etenumerator()

}}  enericlist),则所有的 t 都将被替换为 int。

下面的**示例演示客户端**如何使用泛型 genericlist类来创建整数列表。只需更改类型参数,即可方便地修改下面的**示例,创建字符串或任何其他自定义类型的列表: class testgenericlist

foreach (int i in list)

system.console.writeline(\ndone);}}

什么是泛型?他有什么优点?

2楼:drar_迪丽热巴

泛型。即通过参数化类型来实现在同一份**上操作多种数据类型。泛型是在c#2.

0引入的。泛型(genericity)的字面意思是指具有在多种数据类型上皆可操作的含意,与模板有些相似。

优点:泛型类和泛型方法同时具备可重用性、类型安全和效率,这是非泛型类和非泛型方法无法具备的。泛型通常用与集合以及作用于集合的方法一起使用。

泛型是c#2.0的一个新增加的特性,它为使用c#语言编写面向对象程序增加了极大的效力和灵活性。不会强行对值类型进行装箱和拆箱,或对引用类型进行向下强制类型转换,所以性能得到提高。

泛型是程序设计语言的一种特性。允许程序员在强类型程序设计语言中编写**时定义一些可变部分,那些部分在使用前必须作出指明。各种程序设计语言和其编译器、运行环境对泛型的支持均不一样。

3楼:匿名用户

更加安全,避免装箱拆箱操作

java中为什么使用泛型,使用泛型的优点?

4楼:匿名用户

泛型(generic type 或者generics)是对 java 语言的类型系统的一种扩展,以支持创建可以按类型进行参

数化的类。可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法的形式参数是运行时传递的值的占位符一样。

可以在集合框架(collection framework)中看到泛型的动机。例如,map类允许您向一个map添加任意类的对象,即使最常见的情况是在给定映射(map)中保存某个特定类型(比如string)的对象。

java里面使用泛型的优点

5楼:匿名用户

使用泛型之后,集合类取数据时就不需要对存储的数据进行强制类型转换。

也避免了一些异常的出现。

例如listlist=new arraylist();

list.add("123");

string str=list.get(0);

如果不适用泛型就是这样。

list list=new arraylist();

list.add(123);

string str=(string)list.get(0);

如果这样就会出现类型转换的异常。

java.lang.integer cannot be cast to java.lang.string

6楼:匿名用户

由于集合里面能放各种各样数据格式的数据, 使用泛型之后能限制放入的数据类型, 从而起到一定的控制作用!!!

7楼:永远不知终点

我觉得主要是有两点,第一点是用泛型写**比较容易,第二点是其类型比较安全。希望对你有所帮助。

java中集合泛型带来了什么好处

8楼:育知同创教育

首先,了解一下java关于泛型的概念。泛型,在c++中被

称为模板,就是一种抽象的编程方式。当我们定义类和方法的时候,可以用一种通用的方式进行定义,而不必写出具体的类,这些未知的东西会在真正使用的时候在确定。

对于集合类来说,它们可以存放各种类型的元素。如果在存放之前,就能确定元素的类型,那么就可以更加直观,也让**更加简洁。

泛型的作用是什么?

9楼:刌牂箞

它有什么优势?它对性能有影响吗?它在执行时的行为是什么?.

*** bcl中有哪些泛型类型?举例说明平时编程中您定义的泛型类型。 泛型的作用在于“算法的重用”。

(这点其实很好理解,原来的arraylist只能接受object,现在通过list可以接受任何类型,也就是说arraylist的方法都被各个类型重用了。但是dot ***的泛型有个比较制肘地方,就是你很难对数值类型(值类型)进行算法抽象,因为这牵涉到运算符重载的问题,同时dot ***的泛型的类型参数也不能约束成一个基元值类型(如int、double、float) 。) 它有什么优势?

第一:源**保护。(如果你知道c++模板对泛型的实现机制,就会知道c++在编译的时候根据对泛型的调用,自动“内联”了一个实现,这样泛型的内容就暴露了,尔dot***的实现方式就不同了,泛型类和方法会被编译成il,在执行的时候由jit负责将il变化为指定类型参数的本地**,从而保护了源**) 第二:

类型安全。(这点是最显而易见的,抛弃了使用arraylist时各种丑陋的强制类型转换) 第三:更清晰地**。

因为没有了强制类型转换,所以**自然显得更清晰,但是使用泛型时候带来的<>有时候确实也会让人搞糊涂,幸好泛型方法可以用类型推断或者using语句来进一步简化写法。 第四:更好的性能,因为值类型可以避免装箱和拆箱所带来的损耗(垃圾**的次数也会减少)。

(这点正是泛型神奇的地方,开发历史上抽象能力的上升往往意味着性能的下降,但是泛型却不是!泛型抽象了算法,但是c++和dot***对泛型的实现能够让性能无损,并且更快。java的擦除法泛型就没有这种性能上的好处。

) 它对性能有影响吗? 对性能有积极的影响,因为值类型可以避免装箱和拆箱所带来的负面影响,避免了垃圾**,使得性能显著提高。但是对引用类型这种影响就不明显了。

但是需要注意的是首次为一个特定数据类型调用方法时,clr都会为这个方法生成本地**。这会增大应用程序的工作集大小,从而影响性能。 它在执行时的行为是什么?

使用泛型类型参数的一个方法在进行jit编译时,clr获取il,用指定的类型实参进行替换,然后创建本地**。需要特别注意的是引用类型是共享**的,而对值类型就会为每一种生成独立的一份类型**。但是需要指出的是引用类型的这种**共享并不会造成封闭类型只执行一次构造函数(就算是静态构造函数也是这样的)。

.*** bcl中有哪些泛型类型? list、dictionary、queue、stack、sortedlist和sorteddictionary、linkedlist等等。

举例说明平时编程中您定义的泛型类型。泛型的出现会替换原来一部分使用多态的地方从而提高性能和带来更好的编译时检查,这样就不需要在子类和超类(接口)间频繁转换了。

为什么要使用泛型?使用泛型有什么作用?

10楼:匿名用户

泛型的作用就是提高**的重用性,你肯定知道函数重载吧,但是重载的话还是太烦,要累赘的写这么多的重复**,泛型就是就是避免强制类型转换,减少装箱拆箱提高性能,减少错误

11楼:匿名用户

http://baike.baidu.***/view/1436058.htm?fr=ala0_1_1

什么是泛型?泛型有什么作用

12楼:匿名用户

java 泛型是java se 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中

泛型与非泛型集合的区别?泛型相对于非泛型有哪些好处? 5

13楼:下一个往站

带泛型的集合是比如list并在类中定义一个泛型的数组e arr,非泛型的一个则是list,然后明确在list中定义一个具体类型的数组type arr.

泛型: class x public e x2() {} public void x3() }

可以限定泛型的范围,比如class x,就是x的e必须是一个y的子类或接口实现

这样泛型的灵活在于e可以是任意类型,你不必为了同样的类只是处理数据类型不同而写两遍:

比如:class a }

使用c和c就可以直接定义a和b

另外就是class x,如有个变量为x var或x var,就相当于xvar.这也很有用.

比如一个列表可能有不同类型的值,我们能使用

arraylist list = new arraylist();

list.add(new integer(1)); list.add(new string("aaaa")); list.add(new person());

处理的时候使用:

object x = list.get(index);

if(x instanceof integer)

else if(x instanceof string)

else if(x instanceof person)

else

这就是泛型的原理,也就是说非泛型可以实现泛型.

java中为什么使用泛型,使用泛型的优点

1楼 匿名用户 泛型 generic type 或者generics 是对 java 语言的类型系统的一种扩展,以支持创建可以按类型进行参 数化的类。可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法的形式参数是运行时传递的值的占位符一样。 可以在集合框架 collection f...

请问,java泛型可以做什么,Java里泛型有什么作用?我怎么觉得那个可写可不写

1楼 gta小鸡 复用一个类或方法,使之可以用于不同的参数类型上。 2楼 l旧梦颜 listlist new arraylist 有了泛型,list里面可以装各种类型的对象,而不只是单一的 java里泛型有什么作用?我怎么觉得那个可写可不写 3楼 匿名用户 举个例子来说 你的钱包里你规定只装钱 那么...

沉默高傲型的女生是什么样,如何追沉默高傲型的女孩

1楼 匿名用户 这种女人我见过,他们很个性的,这种女人一般表现在白领阶级,他们一般不和陌生人说话,但是一旦认识你了,那就是很热情的,这这种人外表冷淡但是内心火热, 2楼 匿名用户 就是喜欢装的那样 很喜欢装的很沉默高傲 平时就是冷酷的 不喜欢和别人说话 内型沉默为主 如何追沉默高傲型的女孩 3楼 爵...