1楼:育知同创教育
泛型仅仅是java的语法糖,它不会影响java虚拟机生成的汇编**,在编译阶段,虚拟机就会把泛型的类型擦除,还原成没有泛型的**,所以网上说java用泛型比不用泛型速度慢7倍纯属无稽之谈,顶多编译速度稍微慢一些,执行速度是完全没有什么区别的.
2楼:丁俊鼢
使用得当不影响,泛型是编译时的
java泛型出错的具体区别 20
3楼:安徽新华电脑专修学院
集合的泛型 你就当 这个泛型 代表 这个列表每行元素的内容。
假如是泛型放的是object,object是所有类的父类,所以可以放入所有类型的对象。
如果是integer 那么只能放入integer对象或者integer的子类对象
如果是string 同理。
4楼:fly事在人为
泛型内的类型不同导致的
java 使用泛型 为什么还要强转
5楼:育知同创教育
泛型方法public static t getelement(t obj),当你传入的参数为string i 时,此时的t就为string了,也就是方法可以理解为:public static string getelement(string obj)。
你直接这样调用就会编译失败了:string s1 = getelement(o);
6楼:匿名用户
举个具体的例子来说明一下~~
c#泛型和java泛型的区别
7楼:育知同创教育
泛型技术在c#和java之中的使用方式看似相同,但实现上却有着根本性的分歧,c#里面泛型无论在程序源码中、编译后的il中(intermediate language,中间语言,这时候泛型是一个占位符)或是运行期的clr中都是切实存在的,list与list就是两个不同的类型,它们在系统运行期生成,有自己的虚方法表和类型数据,这种实现称为类型膨胀,基于这种方法实现的泛型被称为真实泛型。
java语言中的泛型则不一样,它只在程序源码中存在,在编译后的字节码文件中,就已经被替换为原来的原始类型(raw type,也称为裸类型)了,并且在相应的地方插入了强制转型**,因此对于运行期的java语言来说,arraylist与arraylist就是同一个类。所以说泛型技术实际上是java语言的一颗语法糖,java语言中的泛型实现方法称为类型擦除,基于这种方法实现的泛型被称为伪泛型。
java泛型能这么限定么
8楼:深圳中宇视通科技****
public class a public a(double x) }
9楼:匿名用户
到底是怎么限定呢
~~~~~~~~
为什么要用java泛型
10楼:育知同创教育
从上面的内容中,大家已经明白了泛型的具体运作过程。也知道了接口、类和方法也都可以使用泛型去定义,以及相应的使用。是的,在具体使用时,可以分为泛型接口、泛型类和泛型方法。
自定义泛型接口、泛型类和泛型方法与上述java源码中的list、arraylist类似。如下,我们看一个最简单的泛型类和方法定义:
1 public class generictest 8 9 }10 11 class box18 19 public box(t data) 22 23 public t getdata() 26 27 }
在泛型接口、泛型类和泛型方法的定义过程中,我们常见的如t、e、k、v等形式的参数常用于表示泛型形参,由于接收来自外部使用时候传入的类型实参。那么对于不同传入的类型实参,生成的相应对象实例的类型是不是一样的呢?
1 public class generictest 13 14 }
由此,我们发现,在使用泛型类时,虽然传入了不同的泛型实参,但并没有真正意义上生成不同的类型,传入不同泛型实参的泛型类在内存上只有一个,即还是原来的最基本的类型(本实例中为box),当然,在逻辑上我们可以理解成多个不同的泛型类型。
究其原因,在于java中的泛型这一概念提出的目的,导致其只是作用于**编译阶段,在编译过程中,对于正确检验泛型结果后,会将泛型的相关信息擦出,也就是说,成功编译过后的class文件中是不包含任何泛型信息的。泛型信息不会进入到运行时阶段。
对此总结成一句话:泛型类型在逻辑上看以看成是多个不同的类型,实际上都是相同的基本类型。
java 泛型类和泛型方法的区别
11楼:好程序员
在java中
泛型类:是在实例化类的时候指明泛型的具体类型。
泛型方法:是在调用方法的时候指明泛型的具体类型。
定义泛型方法时:必须在返回值前边加一个,来声明这是一个泛型方法,持有一个泛型t,然后才可以用泛型t作为方法的返回值,泛型方法不是仅仅可以有一个参数class,可以根据需要添加其他参数。
定义泛型类时:class的作用就是指明泛型的具体类型,而class类型的变量c,可以用来创建泛型类的对象