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

泛型在编译时还是运行时

发布时间: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语言中的泛型实现方法称为类型擦除,基于这种方法实现的泛型被称为伪泛型。

阅读全文

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

热点内容
手机系统编译语言 浏览:422
华为手机nfc加密卡怎么复制 浏览:19
androidjni开发流程 浏览:881
如何解除vivo应用加密锁 浏览:732
菜单创建文件夹方法 浏览:376
o型密封圈压缩率 浏览:452
lpilinux认证 浏览:205
编译文法原理是什么 浏览:16
python基础教程源代码 浏览:521
编程两个圈是什么 浏览:433
程序员掉头发怎么办 浏览:317
csgo电脑命令 浏览:590
pop和smtp服务器地址 浏览:524
使用境外服务器有什么好处和弊端 浏览:314
如何教育孩子有礼貌的app 浏览:46
如何下载得力app 浏览:900
安卓如何切换分屏 浏览:529
python递归删除文件夹 浏览:823
程序员那么可爱被安排婚礼 浏览:654
农业银行app如何查看自己卡号 浏览:158