导航:首页 > 源码编译 > 泛型在编译时还是运行时

泛型在编译时还是运行时

发布时间:2024-09-25 01:02:13

java泛型类和泛型方法

1、什么是泛型?
泛型简言之就是类型参数化,不指定类型,运行时传入类型。
如果业务需求有没有可能不指定类型?有没有可能在运行时才知道具体的类型是什么?
所以,就出现了泛型。

public class Container<K, V> {
private K key;
private V value;
public Container(K k, V v) {
key = k;
value = v;
}
public K getKey() {
return key;
}
public void setKey(K key) {
this.key = key;
}
public V getValue() {
return value;
}
public void setValue(V value) {
this.value = value;
}
}

编译期,是无法知道K和V具体是什么类型,只有在运行时才会真正根据类型来构造和分配内存。这就是泛型。

㈡ java中什么是泛型,怎么用泛型

最简单的运用:List<String> list = new ArrayList<String>();
这个是什么意思?
意思就是list只装String类型的数据,别的,装不进去
然后你就会觉得这个好像有点封装的意思,比如LIst<Student>,封装学生类
所以,所谓泛型就是广泛的数据类型,你可以把它理解成封装

㈢ c#泛型和java泛型的区别

泛型技术在C#和Java之中的使用方式看似相同,但实现上却有着根本性的分歧,C#里面泛型无论在程序源码中、编译后的IL中(Intermediate Language,中间语言,这时候泛型是一个占位符)或是运行期的CLR中都是切实存在的,List<int>与List<String>就是两个不同的类型,它们在系统运行期生成,有自己的虚方法表和类型数据,这种实现称为类型膨胀,基于这种方法实现的泛型被称为真实泛型。
Java语言中的泛型则不一样,它只在程序源码中存在,在编译后的字节码文件中,就已经被替换为原来的原始类型(Raw Type,也称为裸类型)了,并且在相应的地方插入了强制转型代码,因此对于运行期的Java语言来说,ArrayList<int>与ArrayList<String>就是同一个类。所以说泛型技术实际上是Java语言的一颗语法糖,Java语言中的泛型实现方法称为类型擦除,基于这种方法实现的泛型被称为伪泛型。

阅读全文

与泛型在编译时还是运行时相关的资料

热点内容
我的世界js手动解压 浏览:27
向往的生活什么小说app 浏览:1002
程序员可以兼职卖茶叶吗 浏览:145
pdf怎么免费转换成word文件 浏览:941
为什么企业都有自己的app 浏览:522
北京网校系统源码 浏览:542
java密码验证正则 浏览:285
Google算法面试 浏览:380
什么app有个车字 浏览:499
Android数据库建立 浏览:123
php前端java后端架构 浏览:38
javasocket框架 浏览:246
html转化为pdf 浏览:355
泛型在编译时还是运行时 浏览:672
图片爬虫源码共享 浏览:383
全站源码加数据怎么导入 浏览:272
androidscrollview弹性 浏览:860
网络加密方法 浏览:67
pdf色彩管理 浏览:305
javabase64编码解码 浏览:538